В симуляторе все это работает.
Я использую Wi-Fi на устройстве, так как предполагаю, что он самый стабильный.
Проблема возникает, когда я пытаюсь опубликовать большечем 1.5K данных в кодировке urlen.
Если я отправляю меньше, это нормально.
Кажется, что зависает команда .flush ();
Работает на физическом 9700, поэтому я предполагаю, что это, возможно, зависит от устройства
В приведенном ниже примере я использую переменные формы, но я также попытался опубликовать тип контента json, но все еще имел ту же проблему
Я написал небольшой тестапп и использую основной поток, так что я знаю, что потоки не запутываются
Если у кого-то есть какие-нибудь идеи, которые были бы хороши.
private String PostEventsTest()
{
String returnValue = "Error";
HttpConnection hc = null;
DataInputStream dis = null;
DataOutputStream dos = null;
StringBuffer messagebuffer = new StringBuffer();
URLEncodedPostData postValuePairs;
try
{
postValuePairs = new URLEncodedPostData(null, false);
postValuePairs.append("DATA",postData);// postData);
hc = (HttpConnection) Connector.open(postURL, Connector.READ_WRITE);
hc.setRequestMethod(HttpConnection.POST);
hc.setRequestProperty("User-Agent", "BlackBerry");
hc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
hc.setRequestProperty("Content-Length", Integer.toString(postValuePairs.getBytes().length));
//hc.setRequestProperty("Content-Length", Integer.toString(postData.length()));
dos = hc.openDataOutputStream();
dos.write(postValuePairs.getBytes());
dos.flush();
dos.close();
// Retrieve the response back from the servlet
dis = new DataInputStream(hc.openInputStream());
int ch;
// Check the Content-Length first
long len = hc.getLength();
if (len != -1)
{
for (int i = 0; i < len; i++)
if ((ch = dis.read()) != -1)
messagebuffer.append((char) ch);
}
else
{ // if the content-length is not available
while ((ch = dis.read()) != -1)
messagebuffer.append((char) ch);
}
dis.close();
returnValue = "Yahoo";
}
catch (Exception ex)
{
returnValue = ex.toString();
ex.printStackTrace();
}
return returnValue;
}