使用KSoap2从Android到.net Web服务器的SOAP调用

使用KSoap2从Android到.net Web服务器的SOAP调用,android,soap,ksoap2,Android,Soap,Ksoap2,大家好 我正在尝试对本地运行的.net Web服务器进行SOAP调用,但我想我遗漏了一些东西。Android代码对我来说似乎很好。也许SOAP请求是错误的 这是Web服务器为我尝试调用的方法提供的: POST /WebAvanza/WebAvanzaInterface.asmx HTTP/1.1 Host: localhost Content-Type: application/soap+xml; charset=utf-8 Content-Length: length <?xml ve

大家好

我正在尝试对本地运行的.net Web服务器进行SOAP调用,但我想我遗漏了一些东西。Android代码对我来说似乎很好。也许SOAP请求是错误的

这是Web服务器为我尝试调用的方法提供的:

POST /WebAvanza/WebAvanzaInterface.asmx HTTP/1.1
Host: localhost
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <InitTransazione xmlns="http://tempuri.org/">
      <ip>string</ip>
      <codice>string</codice>
    </InitTransazione>
  </soap12:Body>
</soap12:Envelope>
URL是
http://192.168.168.24/WebAvanza/WebAvanzaInterface.asmx
,地址指运行服务器的机器

我只在执行
httpTransport.call
后得到一个异常

这是StackTrace(如果有人需要)


检查代码我认为主要问题是因为您没有在异步线程中执行Okhttpclient

我认为,如果您使用Okhttpclient的排队方法运行代码,问题应该得到解决

client.newCall(request).enqueue(new Callback() {
      @Override public void onFailure(Call call, IOException e) {
        //Exception here
        }

      @Override public void onResponse(Call call, Response response) throws IOException {
        try (ResponseBody responseBody = response.body()) {
           /*
           * Handle your response here :
           * Do whatever you want if the response.isSuccesful or not
           */ 
        }
    });

我希望它能帮助您。

我发现问题出在服务器上,代码很好。。。
该死的,我花了将近5个小时来做这件事。

你检查过你在舱单上是否有互联网权限吗?是的:
谢谢你的回答。我想
client
应该声明如下内容
OkHttpClient=new-OkHttpClient()。如果是,它告诉我不能在
Ok HttpClient
中使用
SoapObject
W/System.err: android.os.NetworkOnMainThreadException
W/System.err:     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1528)
W/System.err:     at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:389)
W/System.err:     at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
W/System.err:     at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
W/System.err:     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
W/System.err:     at java.net.Socket.connect(Socket.java:621)
W/System.err:     at com.android.okhttp.internal.Platform.connectSocket(Platform.java:145)
W/System.err:     at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:141)
W/System.err:     at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
W/System.err:     at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
W/System.err:     at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
W/System.err:     at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
W/System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
W/System.err:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:258)
W/System.err:     at org.ksoap2.transport.ServiceConnectionSE.openOutputStream(ServiceConnectionSE.java:130)
W/System.err:     at org.ksoap2.transport.HttpTransportSE.sendData(HttpTransportSE.java:295)
W/System.err:     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:184)
W/System.err:     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118)
W/System.err:     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:113)
W/System.err:     at com.infovision.elcam_02.Operations$override.InitTransaction(Operations.java:64)
W/System.err:     at com.infovision.elcam_02.Operations$override.InitOperation(Operations.java:40)
W/System.err:     at com.infovision.elcam_02.Operations$override.access$dispatch(Unknown Source:49)
W/System.err:     at com.infovision.elcam_02.Operations.InitOperation(Unknown Source:15)
client.newCall(request).enqueue(new Callback() {
      @Override public void onFailure(Call call, IOException e) {
        //Exception here
        }

      @Override public void onResponse(Call call, Response response) throws IOException {
        try (ResponseBody responseBody = response.body()) {
           /*
           * Handle your response here :
           * Do whatever you want if the response.isSuccesful or not
           */ 
        }
    });