Я вызываю веб-сервис .Net из моего приложения Blackberry. После проблем с KSoap2 я решил сделать все вручную. Вот фрагмент кода:
byte [] postDataBytes = soapRequestEnvelope.getBytes();
byte [] dataRetrieved;
try
{
HttpConnection connection = (HttpConnection)Connector.open(URL);
connection.setRequestMethod(HttpConnection.POST);
connection.setRequestProperty("soapaction", soapAction);
connection.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
os = connection.openOutputStream();
os.write(postDataBytes);
int rc = connection.getResponseCode();
if(rc == HttpConnection.HTTP_OK)
{
inputStream = connection.openInputStream();
dataRetrieved = new byte[(int)connection.getLength()];
int bytesRead = inputStream .read(dataRetrieved);
}
else
{
dataRetrieved = null;
}
String dataString = new String(dataRetrieved);
//HttpConnection = javax.microedition.io.HttpConnection
//inputStream = java.io.InputStream
Проблема, с которой я столкнулся, заключается в том, что XML, который я получаю от вызова веб-службы, обрывается.
Когда я печатаю количество принятых байтов на экране, иногда появляется 1170 (что на самом деле соответствует размеру ответа, который я ожидаю в данной конкретной ситуации).
Но в других случаях количество полученных байтов равно 702 ...... почему 702 ???
Я тестировал около десятка раз подряд и получил следующий результат:
1170, 702, 1170, 1170, 702, 1170, 1170, 702, 1170, 702, 1170, 702, 702, 702, 1170, 702
Но почему 702 ?? Когда это портит и не работает, почему это так последовательно ?? Хотя он всегда выделяет 1170 байт, но почему иногда он читает только 702 ??
Это очень странно.
РЕДАКТИРОВАТЬ: я попытался вывести inputStream.available () на экран, а также для сравнения, совершенно не соответствует. Он варьируется между 0, 702 и 1170. Иногда доступные байты равны 0 или 702, а считываемые байты - 1170. Я совершенно сбит с толку.
Любая помощь будет принята с благодарностью.
Спасибо