Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中SOAP Web服务的GetResponse_Android_Web Services_Soap_Android Ksoap2 - Fatal编程技术网

Android中SOAP Web服务的GetResponse

Android中SOAP Web服务的GetResponse,android,web-services,soap,android-ksoap2,Android,Web Services,Soap,Android Ksoap2,我想从sapsoapweb服务获得响应,但我得到了一个异常 我正在使用以下代码: package com.veee.pack; import java.io.IOException; import android.app.Activity; import android.os.Bundle; import java.io.IOException; import org.apache.http.client.HttpClient; import org.apache.http.impl.clien

我想从sapsoapweb服务获得响应,但我得到了一个异常

我正在使用以下代码:

package com.veee.pack;
import java.io.IOException;
import android.app.Activity;
import android.os.Bundle;
import java.io.IOException;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.SoapFault;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;
import org.ksoap2.transport.HttpTransportBasicAuth;
import org.ksoap2.transport.HttpTransportSE;
import org.w3c.dom.Element;
import org.xmlpull.v1.XmlPullParserException;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class WeservicesExampleActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //getting these values from wsdl file
       //username and password appended as URL Parameters
         final String NAMESPACE = "urn:sap-com:document:sap:soap:functions:mc-style";
         final String URL = "http://*********:8000/sap/bc/srt/wsdl/srvc_14DAE9C8D79F1EE196F1FC6C6518A345/wsdl11/allinone/ws_policy/document?sap-client=800&sap-user******&sap-password=************";
         final String METHOD_NAME = "Z_GET_CUST_GEN";
         final String SOAP_ACTION = "urn:sap-com:document:sap:soap:functions:mc-style/Z_GET_CUST_GEN";

        SoapObject request =new SoapObject(NAMESPACE, METHOD_NAME);

        request.addProperty("Input", "1460");
        request.addProperty("Langu", "d");

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);

        envelope.setOutputSoapObject(request);

        HttpTransportSE httptransport=new HttpTransportSE(URL);
        httptransport.debug = true;
        try {

          //calling the services
         httptransport.call(SOAP_ACTION, envelope);

         Object result = (Object) envelope.getResponse();

        //getting the Response Here.

         System.out.println("Result" + result.toString());

        }
        catch (IOException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (XmlPullParserException e) {
        // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
当我调试应用程序时,它终止于

httptransport.call(SOAP_ACTION, envelope); 
我在android中使用ksoap2运行了一些示例,效果很好。我在日志中遇到以下异常:

04-24 12:19:17.935: WARN/System.err(1569): java.net.SocketTimeoutException
04-24 12:19:17.935: WARN/System.err(1569):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:130)
请给出解决此问题的任何建议,或发送如何在Android中通过XML发出请求并接收响应


提前感谢….

当套接字在某个时间间隔内无法读取或接受时,会发生socketTimeoutException。您应该始终为类似的事情做好准备,并在代码中使用try/catch来处理这些情况


访问web服务;确保您的应用程序在其清单中具有android.permission.INTERNET,并检查是否可以从模拟器访问web服务。您可以使用中的代码来检查您的服务是否可访问。

当套接字在某个时间间隔内无法读取或接受时,会发生socketTimeoutException。您应该始终为类似的事情做好准备,并在代码中使用try/catch来处理这些情况


访问web服务;确保您的应用程序在其清单中具有android.permission.INTERNET,并检查是否可以从模拟器访问web服务。您可以使用中的代码检查您的服务是否可访问。

您可以使用手动设置超时限制

HttpTransportSE androidHttpTransport = new HttpTransportSE(URL,Time_Out);

您可以使用手动设置超时限制

HttpTransportSE androidHttpTransport = new HttpTransportSE(URL,Time_Out);

避免在android中使用SOAP。。因为这是不推荐的

使用android官方支持的Restful Web服务。 如果您的Web服务提供商无法提供Restful服务,…请忍受一些问题,例如该应用程序有时无法工作,并且可能无法在某些android设备上工作

要解决ksoap2实现中使用多个ksoap2驱动程序的问题,请将网络调用的逻辑放在单独的线程中

调用httptransport.call(SOAP\u操作,信封);消耗大量内存、更多时间,因此避免在主线程中使用此调用。尝试在新的创建仿真器和其中一个设备中创建。KSOAP2在20%到50%的android设备上工作。有时,它可能无法在同一制造商的设备中工作,例如,它可能在HTC sense 2.3.4版本中工作,也可能无法在HTC sense 2.3.5版本中工作


建议使用Restful Web服务。

避免在android中使用SOAP。。因为这是不推荐的

使用android官方支持的Restful Web服务。 如果您的Web服务提供商无法提供Restful服务,…请忍受一些问题,例如该应用程序有时无法工作,并且可能无法在某些android设备上工作

要解决ksoap2实现中使用多个ksoap2驱动程序的问题,请将网络调用的逻辑放在单独的线程中

调用httptransport.call(SOAP\u操作,信封);消耗大量内存、更多时间,因此避免在主线程中使用此调用。尝试在新的创建仿真器和其中一个设备中创建。KSOAP2在20%到50%的android设备上工作。有时,它可能无法在同一制造商的设备中工作,例如,它可能在HTC sense 2.3.4版本中工作,也可能无法在HTC sense 2.3.5版本中工作


建议使用Restful Web服务。

java.net.SocketTimeoutException
似乎暗示您正在尝试与未打开的服务通信。假设您的
URL
地址指向仅在您的内部网络上公开的SAP服务-您如何连接到它,仅限WiFi?你能用Wireshark(或类似的)来检查你是否连接到它吗?谢谢你的回复,我使用的是Wired net,但soapui pro它工作得很好。如何在Android emulator中使其快速运行?需要任何设置吗?Wired net?从没听说过那个网络分析仪。在任何情况下,由于您显然是在模拟器上运行,您在网络分析器的连接日志中看到了什么?您是否在网络中使用了?您可以使用emulator中的默认web浏览器,浏览一些随机网站,如www.google.com?是的,我在我的计算机上使用有线网络。这将是一个基于路由器的网络。我在android emulator浏览器中浏览一些网站。它对我来说工作正常
java.net。SocketTimeoutException
似乎暗示着你正在尝试与一个未打开的服务进行通信。假设您的
URL
地址指向仅在您的内部网络上公开的SAP服务-您如何连接到它,仅限WiFi?你能用Wireshark(或类似的)来检查你是否连接到它吗?谢谢你的回复,我使用的是Wired net,但soapui pro它工作得很好。如何在Android emulator中使其快速运行?需要任何设置吗?Wired net?从没听说过那个网络分析仪。在任何情况下,由于您显然是在模拟器上运行,您在网络分析器的连接日志中看到了什么?您是否在网络中使用了?你能在emulator中使用默认的web浏览器浏览到一些随机网站,如www.google.com吗?是的,我在我的计算机上使用有线网络。这将是一个基于路由器的网络。我在android emulator浏览器中浏览一些网站。这对我来说很好