【发布时间】:2014-12-22 13:02:21
【问题描述】:
我正在尝试使用 ksoap2 并在 Genymotion 中运行的 Android 应用程序使用一些 WCF 数据服务。我可以从模拟器网络浏览器访问 URL,但是当我尝试从我的代码中使用它时,我得到了这个异常:
12-22 12:46:34.911: W/System.err(5230): org.ksoap2.transport.HttpResponseException: HTTP request failed, HTTP status: 307
我在安卓应用中的代码是这样的:
private static final String SOAP_ACTION = "http://192.168.1.223:82/Adv.svc/and_hist_ventas?$filter=xarticulo_id eq '''666'''";
private static final String METHOD_NAME = "GetHistVentas";
private static final String NAMESPACE = "Adv";
private static final String URL = "http://192.168.1.223:82/Adv.svc";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE transport = new HttpTransportSE(URL);
transport.call(SOAP_ACTION, envelope);
SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
String resultData = result.toString();
我在transport.call(SOAP_ACTION, envelope); 中遇到了异常,而且我知道,307 错误是一个重定向循环,这对我来说没有意义。请记住,我可以从模拟器浏览器访问网络服务。
有什么想法吗?
【问题讨论】:
-
我猜 WCF 需要您更改 URL 以使用结尾斜杠。这是 307 响应最常见的原因。因此,请使用带有结尾斜杠的 Uri 以避免 WCF 响应 307,例如
"http://192.168.1.223:82/Adv.svc/"。但是,如果您使用fiddler 之类的工具更新问题以显示原始 http 响应,这将有所帮助 -
成功了,问题确实是
/所以谢谢。我现在有一个XmlPullParserException,但我稍后会尝试让它工作。如果你想把你的答案写到答案的地方,那么我可以随时验证它。再次感谢您!
标签: c# android wcf http ksoap2