1

ksoap2を使用してAndroidから.netWebサービスを呼び出す際に問題が発生しました。呼び出しはパラメーターなしで問題なく実行されますが、任意のタイプのパラメーターを渡すと、Webサービスはnull値を受け取るだけです。私は可能な限りすべてを試しましたが、今のところ運がありません。誰かが助けてくれることを願っています。クライアント側のコードは次のとおりです。

 public static boolean temp(){
          try { 

           SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME_TEMP);
           PopertyInfo p = new PropertyInfo();
           p.type = PropertyInfo.INTEGER_CLASS;
           p.setName("num");
           p.setValue(5);
           p.setNamespace(NAMESPACE);
           request.addProperty(p)  ;
           SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11 );
           envelope.dotNet = true;
           envelope.encodingStyle = SoapSerializationEnvelope.ENC;
           envelope.setOutputSoapObject(request);
           AndroidHttpTransport  androidHttpTransport = new AndroidHttpTransport (URL);
           androidHttpTransport.call(SOAP_ACTION_TEMP, envelope);
     .....
             }

     .....
4

3 に答える 3

1

私はこの問題を抱えていて、それを解決することができました。それを解決するには、次の設定を検討する必要があります。

私のURLは次のとおりです: "http://"+"MyIP:80/PathTraceWS/SetPathToServer.asmx" (スタックオーバーフロー検証のため、上記のようにURLを示しました)

Web サービス アクション: SetData

    String SOAP_ACTION= "http://"+"tempuri.org/SetData";
    String OPERATION_NAME="SetData";
    String WSDL_TARGET_NAMESPACE="http://"+tempuri.org/";
    String SOAP_ADDRESS="http://"+"192.168.1.54:80/PathTraceWS/SetPathToServer.asmx";

上記のパラメータを正しく設定すれば、問題は解決すると思います。私の問題は次のとおりです。

1- WSDL_TARGET_NAMESPACE を「http://」+「tempuri.org/」ではなく「http://」+「tempuri.org」に設定する

2-AndroidモバイルエミュレーターでWebサービスを呼び出す場合は、localhostを使用せず、代わりにシステムIPを使用する必要があります

于 2016-07-15T10:17:38.720 に答える
1

このように私のためにうまくいきます...

SoapObject requete = new SoapObject(NAMESPACE, METHOD_NAME);

PropertyInfo propertyInfo = new PropertyInfo();
propertyInfo.type = PropertyInfo.INTEGER_CLASS;
propertyInfo.name = "value";
requete.addProperty(propertyInfo, 2);

SoapSerializationEnvelope enveloppe = new SoapSerializationEnvelope(SoapEnvelope.VER11);
enveloppe.dotNet = true;
enveloppe.setOutputSoapObject(requete);

私の SOAP サーバーは WCF サービスです。クライアントは Ksoap を使用した Android エミュレーターです。

于 2010-06-19T16:05:32.617 に答える
0

Webサービスを制御できる場合は、Webサービスhttp://の名前空間名から削除してみてください(Javaコードのすべての参照を更新してください)。使用しているのが独自のWebサービスでない場合は解決策ではありませんが(そのためには、この回避策を試すことができます)、それ以外の場合は正常に機能しているようです。

于 2010-07-08T14:14:18.843 に答える