【问题标题】:Getting 307 error with ksoap2 and WCF data servicesksoap2 和 WCF 数据服务出现 307 错误
【发布时间】: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


【解决方案1】:

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

如果您使用fiddler 之类的工具更新您的问题以显示原始 http 响应,这会有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 2013-06-17
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多