gpt4 book ai didi

android - 从 Android 中的 SOAP 网络服务获取响应

转载 作者:行者123 更新时间:2023-11-30 04:14:20 26 4
gpt4 key购买 nike

我想从 SAP SOAP Web 服务获得响应,但出现异常。

我正在使用以下代码:

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 运行了一些示例,它工作正常。我的 logcat 中出现以下异常:

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 发出请求和接收响应。

提前致谢......

最佳答案

避免在 android 中使用 SOAP.. 因为不推荐。

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

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

调用 httptransport.call(SOAP_ACTION, envelope);消耗大量内存,更多时间,因此避免在主线程中使用此调用。尝试使用新的创建模拟器和其中一个设备。 KSOAP2 适用于 20% 到 50% 的安卓设备。有时它可能无法在来自同一制造商的设备中工作,例如它可能在 HTC Sense 2.3.4 中工作,但在 HTC Sense 2.3.5 版本中可能无法工作。

推荐使用Restful Webservices。

关于android - 从 Android 中的 SOAP 网络服务获取响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10293266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com