Я знаю, что этот вопрос довольно старый, и OP, вероятно, уже решил его, но я только что столкнулся с той же проблемой и сумел ее исправить!
Вам нужно добавить ;deviceside=true
на ваш URL.
Так, например, ваш URL изменится с "http://example.com/directory/submitpost.php"
на "http://example.com/directory/submitpost.php;deviceside=true"
.
Я нашел это здесь: http://supportforums.blackberry.com/t5/Java-Development/Different-ways-to-make-an-HTTP-or-socket-connection/ta-p/445879
Мой POST-запрос истекал через 3 минуты, когда у меня его не было (см. Мой комментарий ), но он работает нормально с добавленным к URL-адресу.
Я бы также рекомендовал использовать ConnectionFactory
.Вот мой код:
Network.httpPost("http://example.com/directory/submitpost.php;deviceside=true", paramNamesArray, paramValsArray)
public static void httpPost(String urlStr, String[] paramName, String[] paramVal) throws Exception {
ConnectionFactory conFactory = new ConnectionFactory();
conFactory.setTimeLimit(1000);
HttpConnection conn = (HttpConnection) conFactory.getConnection(urlStr).getConnection();
conn.setRequestMethod(HttpConnection.POST);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
StringBuffer sb = new StringBuffer();
for (int i = 0; i < paramName.length; i++) {
sb.append(paramName[i]);
sb.append("=");
sb.append(paramVal[i]);
sb.append("&");
}
byte[] postData = sb.toString().getBytes("UTF-8");
conn.setRequestProperty("Content-Length",new Integer(postData.length).toString());
OutputStream out = conn.openOutputStream();
out.write(postData);
//out.flush(); //Throws an Exception for some reason/Doesn't do anything anyways
out.close();
//This writes to our connection and waits for a response
if (conn.getResponseCode() != 200) {
throw new Exception(conn.getResponseMessage());
}
}