0

私は自分のアプリケーションでSOAPサービスを使用しています.SOAPサービスを呼び出すと、シリアル化できない問題がスローされます:

     SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);           
     SoapObject authentication = new SoapObject(NAMESPACE,"authentication");
     PropertyInfo usrid =new PropertyInfo();
     usrid.setName("LoginID");
     usrid.setValue("sting");
     usrid.setType(String.class);
     authentication.addProperty(usrid);        

     PropertyInfo pass =new PropertyInfo();
     pass.setName("Password");
     pass.setValue("string");
     pass.setType(String.class);
     authentication.addProperty(pass);  

     request.addSoapObject(authentication);

     PropertyInfo nos =new PropertyInfo();
     no.setName("No");
     no.setValue(no);
     no.setType(String.class);
     //authentication.addProperty(no);
     request.addProperty("Str", nos);

     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
     envelope.setOutputSoapObject(request);
     envelope.dotNet=true;    
     HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
     try
     { 
          androidHttpTransport.call(SOAP_ACTION,envelope);
          Object result=(Object)envelope.getResponse(); --------->Here i am getting nullpointer.
          Log.i("myApp",result.toString());         
          System.out.println("subbu="+result.toString());
     }

私のリクエスト構造は次のとおりです。

<authentication>
    <LoginID>string</LoginID>
    <Password>string</Password>
</authentication>
<No>string</No>

次のエラー メッセージが表示されます。

java.lang.RuntimeException: Cannot serialize:No:
4

1 に答える 1

0

私の意見では、あなたが書いているようにあなたのコードはコンパイルされるべきではありません:

PropertyInfo nos =new PropertyInfo();
no.setName("No");
no.setValue(no);
no.setType(String.class);
//authentication.addProperty(no);
request.addProperty("Str", nos);

あなたが明確に意味した場所:

PropertyInfo nos =new PropertyInfo();
nos.setName("No");
nos.setValue(no);
nos.setType(String.class);
//authentication.addProperty(nos);
request.addProperty("Str", nos);

とにかく、これはタイプミスであり、実際のコードではこのエラーは発生していないように感じます。
したがって、あなたの質問に答えるには、どちらがヌル オブジェクトであるかを判断する必要があります。提供されたコード スニペットから推測することはできません。
ブレークポイントを使用して、アプリケーションをデバッグ モードで実行します。次に、null オブジェクトに関する情報を提供します。
また、WSDL を表示すると非常に役立ちます。

于 2012-05-19T09:49:46.563 に答える