3

私はこれについて議論しているトピックを見てきましたが、誰も解決策を投稿していないようです。現在、.NetWebサービスへのパラメーターの受け渡しをテストしています。パラメータがWebサービスに到達すると、追加の文字列が追加され、アプリケーションにも返されます。しかし、返されるのは文字列メッセージだけであり、渡したパラメータではありません。Webサービスまたはsoapメソッドに問題がありますか?

石鹸:

SoapObject request = new SoapObject(NAMESPACE、METHOD_NAME);

    request.addProperty("A", "workowr");


    SoapSerializationEnvelope envelope =
        new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);    
        try {
            androidHttpTransport.call(SOAP_ACTION, envelope);
            SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
            //SoapObject result = (SoapObject)envelope.getResponse();       
            String resultData = result.toString();
            testTV.setText(resultData);

        }
        catch(Exception e)
        {
            testTV.setText(e.getMessage());
        }

これが私の単純な.NetWebサービスです。

パブリック関数getRegInfo(ByVal A As String)As String

A+「文字列メッセージ」を返す

終了機能

助けていただければ幸いです。

4

5 に答える 5

5

私にとってうまくいったのは、.NetWebサービスとアプリケーションの両方で名前空間のURLを変更することでした。

たとえば、私は持っていました:

" http://www.example.com/webservices/ "

私はに変更しました:

「example.com/webservices/」

そしてそれは完璧に機能しました。

試してみます。

于 2010-06-22T18:31:08.687 に答える
1

実際には、最後に余分な「/」を付ける必要はありません。

デバッグしてネット上に書かれていることを試した後、パラメーターを渡すときに最も重要なことは、WebServiceに同じステートメント(declarationとksoap2)を含めることであることがわかりました。

したがって、両方の場所で「/」を使用するか、両方の場所から削除してください。「http://」も使用できます。

于 2011-07-12T07:01:23.640 に答える
1

はい-KSoap経由で接続する場合、Webサービスの名前空間にコロン(:)を含めると問題が発生するようです。通常の非パラメーター呼び出しは正常に機能しますが、パラメーターは何らかの理由でnullとして処理されるようです。

于 2010-07-13T13:16:29.537 に答える
1

これが機能するパラメータを追加する完璧なコードは これを試してください

       SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);
    envelope.dotNet = true;
    PropertyInfo pi = new PropertyInfo();
    pi.setName("ProcName");
    pi.setValue(a);
    pi.setType(int.class);
    request.addProperty(pi);
    pi=new PropertyInfo();
    pi.setName("UserName");
    pi.setValue(b);
    pi.setType(String.class);
    request.addProperty(pi);

    pi=new PropertyInfo();
    pi.setName("Password");
    pi.setValue(c);
    pi.setType(String.class);
    request.addProperty(pi);

    pi=new PropertyInfo();
    pi.setName("Paras");
    pi.setValue(d);
    pi.setType(String.class);
    request.addProperty(pi);


    Object response = null;

    HttpTransportSE androidHttpTransport = new HttpTransportSE(SOAP_ADDRESS);

    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);
        response = envelope.getResponse();
    } catch (final Exception e) {
        String error = "no";
    }
    return response.toString();
}
于 2016-08-06T06:45:55.437 に答える
0

名前空間とsoapアクションは、WSDLxmlファイルに表示されるものとまったく同じようにコピーして貼り付ける必要があります。

同じ問題が発生し、(名前空間とSOAPアクション)からhttp://を削除すると、問題は解決しました(WSDLではhttp://がありません)実際にローカルWebサービス(インストールされているサービス)にアクセスしようとしましたローカルサーバーで)

ただし、外部の.NET Webサービス(レート交換を取得する中央銀行のWebサービス)にアクセスする別のアプリケーションがあります。WSDLNameSpaceとSoapActionにはhttp://が含まれています私のアプリケーションはhttp://を削除せずに完全に機能しました

于 2014-12-24T15:44:48.330 に答える