gpt4 book ai didi

java - 错误请求 - 来自 Android 模拟器的 SOAP WCF Web 服务的主机名异常无效

转载 作者:行者123 更新时间:2023-11-30 11:35:33 25 4
gpt4 key购买 nike

我实现了一个 WCF SOAP 服务 (.Net 4),我在 Eclipse 中从 Android 模拟器调用该服务。我的服务作为 Web 应用程序部署在 IIS 7 中。 android 上的 Web 服务客户端使用 SOAP 消息执行 HTTP POST。

当我通过 Eclipse 从 android 模拟器调用 Web 服务时,我得到一个 FileNotFoundException。错误输入流给我以下异常:

<BODY><h2>Bad Request - Invalid Hostname</h2>
<hr><p>HTTP Error 400. The request hostname is invalid.</p>
</BODY></HTML>

当我从 wcftestclient 调用我的 SOAP Web 服务时,请求被成功处理。此外,当我从 Android 模拟器客户端使用 Apache common tcpmon 时,SOAP Web 服务请求已成功处理。

只有当我将 Android 模拟器设置为直接访问 WCF SOAP Web 服务时,才会出现此异常。我已将 WCF SOAP Web 服务配置为 IIS 中的网站,我正在通过 IP 地址/端口 ( http://<myIPAddress>:<myPortNumber>/MyService.svc?wsdl ) 访问它。

我在我的 Android 客户端中按如下方式设置 HttopURLConnection:

connection.setRequestProperty("Content-Type", "text/xml;charset=utf-8");
connection.setRequestProperty("SOAPAction", this.getSOAPAction());
connection.setRequestProperty("Host", "base_urlforwebservices like - xyz.net");
connection.setRequestProperty("Accept-Encoding", "None");
connection.setRequestProperty("Connection", "close");
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestProperty("User-Agent", "android");

我试着取出 setDoOutput(true)setDoInput(true)我还尝试在连接属性中设置授权凭据:

connection.setRequestProperty("Authorization", "Basic " + Base64.encodeToString(userCredentials.getBytes(), Base64.DEFAULT));

这没有任何区别。

在我的 Android.manifest 文件中,我添加了以下设置:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

但这也没有什么不同。

非常感谢对此的任何帮助。谢谢!

最佳答案

您是否从 visual studio 运行 WCF?如果是这样,它仅限于本地主机有两种解决方案:

  1. 如果从 visual studio 记事本 %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config 并将绑定(bind)从 for eaxmpe ":21433:localhost"更改为 ":21422:"现在你应该能够从 android (10.0.2.2) 访问它

  2. 将 WCF 服务部署到 IIS

  3. 在 localhost(pc) 上设置代理并在目标下的 android 运行配置中使用 --http-proxy

关于java - 错误请求 - 来自 Android 模拟器的 SOAP WCF Web 服务的主机名异常无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15059634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com