I am a bit confused right now.
I have a J2ME app that sends POST requests to a servlet. It was working up until miraculous this morning it stopped working. It just won't send the POST data. It will contact the server, but the request data will be empty.
System.out.println(request.getParameterMap());
Always returns
{}
I tried to check the network monitor from the emulator and I saw this
sq~wLhttp://localhost:80802xѬ2xѬ????????xsq~wLhttp://localhost:80802xѬ2xѭ????????xsq~z?http://localhost:80802xѬK2xѬ????????1316274753996
POST /amw/synch HTTP/1.1
User-Agent: Profile/MIDP-1.0 Confirguration/CLDC-1.0 UNTRUSTED/1.0
Accept_Language: en-US
Content-Type: application/x-www-form-urlencoded
Host: localhost:8080
Transfer-Encoding: chunked
56
&action=recover&email=trinisoftinc@gmail.com&password=1011001&api-key=oalkuisnetgauyno
0
xsq~z?http://localhost:80802xѬD2xѭ????????1316274754009
HTTP/1.1 200 OK
X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1 Java/Apple Inc./1.6)
Server: GlassFish Server Open Source Edition 3.1
Content-Type: text/html;charset=UTF-8
Content-Length: 46
Date: Sat, 17 Sep 2011 15:52:33 GMT
{"message":"Server Error: null","status":500}
I didn't know what to make of it really.
Please I need help.
The code sending the request is below
public String post(String url, String query, String optionalParameters) throws IOException {
if (optionalParameters != null) {
url += optionalParameters;
}
query += "&api-key=" + APIKey;
Echo.outln(url + ", " + query.getBytes().length);
Echo.outln(query);
HttpConnection connection;
connection = (HttpConnection) Connector.open(url);
connection.setRequestMethod(HttpConnection.POST);
connection.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Confirguration/CLDC-1.0");
connection.setRequestProperty("Accept_Language", "en-US");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", String.valueOf(query.getBytes().length));
//connection.setRequestProperty("api-key", APIKey);
OutputStream os = connection.openDataOutputStream();
os.write(query.getBytes());
os.flush();
if (connection.getResponseCode() == HttpConnection.HTTP_OK) {
InputStream is = connection.openInputStream();
int ch;
StringBuffer buffer = new StringBuffer();
while((ch = is.read()) != -1) {
buffer.append((char) ch);
}
try {
is.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
return buffer.toString();
} else {
String retval = connection.getResponseMessage() + " : " + connection.getResponseCode();
try {
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
return retval;
}
}
Thanks.
NB: I have an iPhone app that calls the same servlet and works perfectly well.