使用kso​​ap2和WCF数据服务获得307错误

时间:2014-12-22 13:02:22

标签: c# android wcf http ksoap2

我尝试使用ksoap2从一个Android应用程序中使用一些WCF数据服务并在Genymotion中运行。我可以从模拟器Web浏览器访问该URL,但是当我尝试从我的代码中使用它时,我得到了这个例外:

12-22 12:46:34.911: W/System.err(5230): org.ksoap2.transport.HttpResponseException: HTTP request failed, HTTP status: 307

我在Android应用程序中的代码是这样的:

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错误是重定向循环,这对我来说没有意义。请记住,我可以从模拟器浏览器访问Web服务。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我猜WCF需要您更改URL以使用结束斜杠。这是307响应的最常见原因。因此,使用带有结束斜杠的Uri来避免WCF响应307,如"http://192.168.1.223:82/Adv.svc/"

如果您使用fiddler

等工具更新问题以显示原始http响应,那将会有所帮助