2013-04-17 2 views
2

Я написал сегодня свой собственный веб-сервис, и я хочу достичь этого разрыва с помощью моего Android-смартфона. я сделал это, следуя этим учебным пособием: http://javatutorialspoint.blogspot.nl/2012/02/simple-java-web-service-client-using.htmlAndroid ksoap2 http request failed

И это, кажется, работает, потому что я получить правильный результат, когда я называю эту страницу: локальный: 8080/WebServiceV2/услуги/Калькулятор WSDL

Но когда я пытаюсь соединиться с моим смартфоном приложение генерирует исключение (запрос HTTP не удалось, статус HTTP: 500)

private static String SOAP_ACTION = "http://apptomap.de/add"; 
private static String NAMESPACE = "http://apptomap.de"; 
private static String METHOD_NAME = "add"; 
private static String URL = "http://192.168.1.34:8080/WebServiceV2/services/Calculator?wsdl"; 


SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);   
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
envelope.setOutputSoapObject(request); 

HttpTransportSE ht = new HttpTransportSE(URL); 
ht.call(SOAP_ACTION, envelope); 
final SoapPrimitive response = (SoapPrimitive)envelope.getResponse(); 
final String str = response.toString(); 

Это мой код, чтобы соединиться с веб-сервиса, и я получаю исключение в этой строке -> ht.call (SOAP_ACTION, конверт);

Это точно такая же проблема, как это: Soap Throws java.io.IOException: HTTP request failed, HTTP status: 500

Кто-нибудь идея, чтобы решить эту проблему?

Edit: я добавил premission соединиться с интернетом

ответ

0

Я получаю эту ошибку с помощью веб-метод, который принимает два параметра из Android приложения, запущенного код Java CallSoap с целью написать на SQL Server 2008 на моей локальной машине.

Это может быть неприменимо к учебному произведению, которое вы тестируете; однако добавление нового входа пользователя (т. е. разрешения безопасности - NT AUTHORITY \ Network Service) в базу данных помогло.

Кроме того, произошла ошибка при отправке строки, содержащей слишком много символов в качестве параметра для веб-метода. В качестве примера: «01010101010101010101010101010101010101010» выдаст ошибку исключения java, но «0101010» не будет.

У меня есть ограничение на количество байтов, которые могут быть отправлены в качестве параметра или несоответствия типа данных.

0

Загрузите и установите протокол анализатора проводов из www.wireshark.org/download.html на свой веб-сервер.

Запустите проводку, фильтр http или порт tcp, на который отвечает ваш веб-сервер.

Теперь запустите приложение Android для веб-службы.

Поскольку отслеживания продолжаются на wirehark, вы сможете увидеть ошибку для ksoap и отладить соответственно.

У меня были проблемы с датами. Код ошибки не был указан, но из строки сбойной строки я мог видеть, что «Сервер не смог прочитать запрос. В документе XML есть ошибка. Строка 12-10-2013» недопустима. Значение Allxsd «

Отладка этого способа, вы узнаете, какие ошибки отправляет ваше приложение и отлаживают его.

Для тех, кто использует веб-сервер linux, узнайте, как использовать tcpdump.

0

Surround вызов с SoapFault попытаться/поймать

try { 
    ht.call(SOAP_ACTION, envelope); 
} catch (SoapFault soapFault) { 

SoapFault будет содержать сообщение об ошибке, возвращенное с сервера, должно помочь вам понять, что случилось.