0

ksoap2 を使用して Web サービス アプリケーションを使用していますが、エラー 'SoapFault - faultcode: 'Sender' faultstring: 'WEBSERVICE ERROR : Soap Prefix Missing' が表示されます。

ksoap2 がタグに単語を追加していることに気付きました。受け取った xml の例:

<CUSRID i:type="d:string">teste</CUSRID><CPASSID i:type="d:string">teste</CPASSID><CUPC i:type="d:string">produto</CUPC>

これは元のタグです:

<CUSRID>STRING</CUSRID><CPASSID>STRING</CPASSID><CUPC>STRING</CUPC>

そして、これは私のコードアンドロイドです:

    private static final String SOAP_ACTION = "http://187.75.181.76:8090/RETORNASTK";
private static final String METHOD_NAME = "RETORNASTK";
private static final String NAMESPACE = "http://187.75.181.76:8090/";
private static final String URL = "http://187.75.181.76:8090/ws/WSAPPSTOCK.apw";

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {

      Bundle extras = data.getExtras();
      String result = extras.getString("SCAN_RESULT");
      EditText desc = (EditText) findViewById(R.produto.desc);
      desc.setText(result);    

      SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);

      Request.addProperty("CUSRID","teste");
      Request.addProperty("CPASSID","teste");
      Request.addProperty("CUPC",result);

      SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

      soapEnvelope.setOutputSoapObject(Request);

      HttpTransportSE http_transport = new HttpTransportSE(URL);

      try {
          http_transport.call(SOAP_ACTION,soapEnvelope);

          SoapObject obj, obj1, obj2;
          obj = (SoapObject) soapEnvelope.getResponse();
          obj1 = (SoapObject) obj.getProperty("STRUCTSTK");

          for (int i = 0; i < obj1.getPropertyCount(); i++) { 
      // the method getPropertyCount() and  return the number of rows
                  obj2 = (SoapObject) obj1.getProperty(i);
                  obj2.getProperty(0).toString();// value of column 1
                  obj2.getProperty(1).toString();// value of column 2
                  // like that you will get value from each column
              }

      } catch (Exception e) {
          e.printStackTrace();
      } 


  }
4

1 に答える 1