II7和IIS Express的问题

时间:2016-12-13 08:39:35

标签: android asp.net-web-api

我有一个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`

2 个答案:

答案 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,以便您可以从其他计算机(如平板电脑和手机)连接到它。