private HttpConnection connection = null;
private InputStream in = null;
private OutputStream out = null;
String HttpConnect(String DstAddr, String sentdata) throws IOException
{
String res=null;
try
{
connection=(HttpConnection)Connector.open(DstAddr,Connector.READ_WRITE);
connection.setRequestMethod(HttpConnection.POST);
connection.setRequestProperty("user-agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0");
connection.setRequestProperty("content-type", "application/x-www-form-urlencoded");
connection.setRequestProperty("content-length", ""+sentdata.length());
out = connection.openOutputStream();
out.write(sentdata.getBytes());
//out.flush();
/*
byte[] byteRequest = getdata.getBytes();
for (int i = 0; i < byteRequest.length; i++)
out.writeByte(byteRequest);
*/
int rc = connection.getResponseCode();
if (rc != HttpConnection.HTTP_OK)
throw new IOException("HTTP response code: " + rc);
in = connection.openInputStream();
//String type = connection.getType();
int len = (int)connection.getLength();
if (len > 0)
{
int actual = 0;
int bytesread = 0 ;
byte[] data = new byte[len];
while ((bytesread != len) && (actual != -1))
{
actual = in.read(data, bytesread, len - bytesread);
bytesread += actual;
}
res= new String(data);
}
else
{
int ch;
StringBuffer sb = new StringBuffer();
while ((ch = in.read()) != -1)
sb.append((char)ch);
res=sb.toString();
}
}
catch(IOException e)
{
res=e.toString();
}
finally
{
if (in != null)
in.close();
if (out != null)
out.close();
if (connection != null)
connection.close();
}
return res;
}
j2me создание post запроса
Я написал следующую процедуру:
Код:
В результате нет никаких Исключений, а телефон зависает с постоянным миганием значка gprs.
(т.к. эмулятор у меня виснет в любом случае с этой программой, а телефон может давать исключения, тестирую напрямую на телефоне)
было то чтото менял-работало хоть как то и принимало данные, а потом видимо накосячил и все стало вот так. а что накосячил-из памяти вышибло.
В общем-помогите рпзобраться что может быть не так!!!:confused:
(остались закомментированные строчки-может пригодится)
зачем такой изврат с чтением ответа?
Код:
connection = (HttpConnection) Connector.open(url);
connection.setRequestMethod(HttpConnection.POST);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
OutputStream os = connection.openOutputStream();
os.write(postData.getBytes());
try {
os.close();
} catch (Exception e) {
}
InputStream is = connection.openInputStream();
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
byte buf[] = new byte[1024];
int read;
while ((read = is.read(buf)) != -1)
{
bytestream.write(buf, 0, read);
}
String resp = new String(bytestream.toByteArray(), "UTF-8");
bytestream.close();
// ну и позакрывать всё не забыть
connection.setRequestMethod(HttpConnection.POST);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
OutputStream os = connection.openOutputStream();
os.write(postData.getBytes());
try {
os.close();
} catch (Exception e) {
}
InputStream is = connection.openInputStream();
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
byte buf[] = new byte[1024];
int read;
while ((read = is.read(buf)) != -1)
{
bytestream.write(buf, 0, read);
}
String resp = new String(bytestream.toByteArray(), "UTF-8");
bytestream.close();
// ну и позакрывать всё не забыть
код (в оригинале он выглядит немного не так....) проверен уже в нескольких проектах - работает как часы