2

私は今日、自分の Web サービスを作成しました。Android スマートフォンでこのサーバーにアクセスしたいと考えています。このチュートリアルに従ってこれを行いました: http://javatutorialspoint.blogspot.nl/2012/02/simple-java-web-service-client-using.html

そして、このページを呼び出すと正しい結果が得られるため、うまくいくようです: localhost:8080/WebServiceV2/services/Calculator?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();

これは Web サービスに接続するためのコードで、この行で例外が発生します -> ht.call(SOAP_ACTION, エンベロープ);

次のようなまったく同じ問題です: Soap Throws java.io.IOException: HTTP request failed, HTTP status: 500

この問題を解決するアイデアはありますか?

編集:インターネットに接続するための許可を追加しました

4

3 に答える 3

0

呼び出しを SoapFault の try/catch で囲む

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

soapFault には、サーバーから返されたエラー メッセージが含まれており、何が問題なのかを理解するのに役立ちます。

于 2016-12-23T09:58:21.703 に答える
0

プロトコル アナライザー Wireshark を www.wireshark.org/download.html から Web サーバーにダウンロードしてインストールします。

Wireshark を開始し、Web サーバーが応答する http または tcp ポートをフィルタリングします。

次に、Android アプリを Web サービスに対して実行します。

スヌープが Wireshark で進行中なので、ksoap の faultstring を確認し、それに応じてデバッグすることができます。

日付に問題がありました。障害コードは報告されませんでしたが、障害文字列から「サーバーは要求を読み取ることができませんでした。XML ドキュメントにエラーがあります。文字列 12-10-2013' は有効な Allxsd 値ではありません」と表示されました。

この方法でデバッグすると、アプリが送信しているエラーを把握し、それに応じてデバッグできます。

Linux Web サーバーを使用している場合は、tcpdump の使用方法を学んでください。

于 2013-10-22T16:24:50.600 に答える