【发布时间】:2012-04-24 07:08:36
【问题描述】:
我想从 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 发出请求和接收响应。
提前谢谢.....
【问题讨论】:
-
java.net.SocketTimeoutException似乎暗示您正在尝试与未打开的服务进行通信。假设您的URL地址指向仅在您的内部网络上公开的 SAP 服务 - 您如何连接到它,仅限 WiFi?你可以使用 Wireshark(或类似的)来检查你是否连接到它吗? -
感谢您的回复,我正在使用有线网络,但soapui pro 工作正常,如何让它更快
-
在Android模拟器中是否需要任何设置?
-
有线网络?从未听说过那种网络分析仪。无论如何,既然您显然是在模拟器上运行 - 您在网络分析仪的连接日志中看到了什么?您在网络中使用proxy 吗?您可以使用模拟器中的默认网络浏览器浏览到一些随机网站,例如 www.google.com 吗?
-
是的,我在我的电脑上使用有线网络。这将是一个基于路由器的网络。我在 android 模拟器浏览器中浏览一些网站,它对我来说工作正常
标签: android web-services soap android-ksoap2