在 KSOAP2 状态 400 中生成的请求在 SoapUI 中工作



嗨,我正在开发一个使用 Web 服务的应用程序。我可以在 SoapUI 中正确请求它,但是在带有 KSOAP2 库的 Android Studio 中生成的相同请求会收到 HTTP 状态 400。

生成的请求:

<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
     <v:Header>
       <n0:UserId xmlns:n0="http://www.webservice.com">user</n0:UserId>
       <n1:Password xmlns:n1="http://www.webservice.com">pass</n1:Password>
     </v:Header>
     <v:Body>
         <n2:GetAgenciaInfoRequest xmlns:n2="http://www.webservice.com">
             <n2:AgencyClientCode>00001</n2:AgencyClientCode>
         </n2:GetAgenciaInfoRequest>
     </v:Body>
</v:Envelope>

这是我从网络服务呼叫.class

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    //envelope.dotNet = true;
    envelope.implicitTypes = true;
    envelope.setAddAdornments(false);
    envelope.headerOut = new Element[2];
    String UserId = "user";
    String Password = "pass";
    Element username = new Element().createElement(NAMESPACE, "UserId");
    username.addChild(Node.TEXT, UserId);
    envelope.headerOut[0] = username;
    //h.addChild(Node.ELEMENT, username);
    Element pass = new Element().createElement(NAMESPACE, "Password");
    pass.addChild(Node.TEXT, Password);
    //h.addChild(Node.ELEMENT, pass);
    envelope.headerOut[1] = pass;
    envelope.setOutputSoapObject(request);
    HttpTransportSE ht = new HttpTransportSE(URL);

    ArrayList<Object> sol = new ArrayList<Object>();
    try {
        List<HeaderProperty> headerList = new ArrayList<HeaderProperty>();
        headerList.add(new HeaderProperty("Content-Type", "application/soap+xml; charset=utf-8"));
        ht.debug = true;
        ht.call(" http://www.webservice.com/IService1/GetAgenciaInfo", envelope, headerList);
   } catch (Exception e) {
        Log.d("dump Request: " ,ht.requestDump);
        e.printStackTrace();

  }

我不知道为什么当我在 SoapUI 中粘贴请求并正常工作时会收到状态 400,并且很难诊断,但任何帮助将不胜感激。堆栈跟踪只告诉我 400 错误。

问题是我尝试使用的 URL 和内容类型。

注意:尝试在 Soap-UI 中使用 WS,并复制请求窗口顶部使用的 URL。也许没有必要在 ?wsdl 中完成 URL。

内容类型显示在"请求"的"RAW"选项卡中。

相关内容

  • 没有找到相关文章

最新更新