我有一个Android应用程序,它执行对ASP.NET WEBAPI服务的GET请求 我已经创建了该服务,它在您使用II Express时在浏览器中打开时有效。但是我的android设备()中的应用程序无法访问我创建的服务我正在使用URL:http:/ localhost:8306 / api / uconnectservice 收到的LOGCAT如下: java.net.SocketTimeoutException:10000ms后无法连接到/ localhost(端口8306)。我已经激活了IIS7,并尝试查看.NET。我不知道它是否是服务器配置问题。请提供所需的任何帮助或指导 日Thnx 我的Android代码: String URL =“http://localhost:8306/api/uconnectservice”;
private final OkHttpClient client = new OkHttpClient();
public void run() throws Exception {
Request request = new Request.Builder().url(URL).build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@SuppressLint("NewApi")
@Override
public void onResponse(Call call, Response response) throws IOException {
try (ResponseBody responseBody = response.body()) {
if (!response.isSuccessful())
throw new IOException("Unexpected code " + response);
Headers responseHeaders = response.headers();
for (int i = 0, size = responseHeaders.size(); i < size; i++) {
System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
}
Log.e("Results", responseBody.string());
}
}
});
}
/////////////////////CODE FOR SERVER ASP.NET WEBAPI////////////////////
namespace UnicsPlcServices.Controllers
{
public class UConnectServiceController : ApiController
{
private IUconnectRepository _UconnectHandler;
public UConnectServiceController()
{
_UconnectHandler = new UconnectRepository();
}
public UConnectServiceController(IUconnectRepository repository)
{
if (_UconnectHandler == null)
{
throw new ArgumentNullException("repository");
}
_UconnectHandler = repository;
}
// GET api/uconnectservice
public List<AcountTypesRegistered> Get()
{
return _UconnectHandler.GetAll();
}
.........................other code`enter code here`
答案 0 :(得分:0)
我有同样的问题。我用IIS表达的android studio和visual studio。我的解决方案是使用经典的IIS,在Android工作室中我使用了10.0.2.2
而不是localhost
。
IIS Express:您可以使用它,但您必须先允许外部请求。 (http://www.ryadel.com/en/iis-express-allow-external-requests-remote-clients-devices/)
答案 1 :(得分:-1)
您的第一个问题是您没有使用运行Web API的计算机的IP地址,您需要在Java代码而不是localhost中使用它。
你的第二个问题是IIS Express不允许从localhost访问,但为了解决这个问题,我们制作了一个名为Conveyor的免费Visual Studio扩展,你可以从VS中的扩展对话框或这里{{3}获取它}
在不触及配置文件的情况下,它会打开IIS Express,以便您可以从其他计算机(如平板电脑和手机)连接到它。