Я сейчас немного запутался.
У меня есть приложение J2ME, которое отправляет запросы POST сервлету.Это работало до тех пор, пока этим утром не прекратилось чудо.Это просто не отправит данные POST.Он свяжется с сервером, но данные запроса будут пустыми.
System.out.println(request.getParameterMap());
Всегда возвращается
{}
Я пытался проверить сетевой монитор с помощью эмулятора и увидел это
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}
Я не знал, что делатьсделать это действительно.
Пожалуйста, мне нужна помощь.
Код отправки запроса ниже
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;
}
}
Спасибо.
Примечание: у меня естьприложение для iPhone, которое вызывает тот же сервлет и прекрасно работает.