使用 ksoap2 和 WCF 数据服务时出现 307 错误

本文关键字:错误 服务 ksoap2 WCF 数据 使用 | 更新日期: 2023-09-27 18:34:53

我正在尝试从Android应用程序使用一些WCF数据服务,使用ksoap2并在Genymotion中运行。我可以从模拟器 Web 浏览器访问 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 错误是重定向循环,这对我来说没有意义。请记住,我可以从模拟器浏览器访问 Web 服务。

知道吗?

使用 ksoap2 和 WCF 数据服务时出现 307 错误

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

不过,如果您更新问题以使用小提琴手等工具显示原始 http 响应,这将有所帮助