【问题标题】:I want to send a HTTP request (get) from my android phone to my mvc asp.net app running on my laptop我想从我的 android 手机向我的笔记本电脑上运行的 mvc asp.net 应用程序发送一个 HTTP 请求(get)
【发布时间】:2021-09-06 01:56:53
【问题描述】:

我想从我的 mvc asp.net 应用程序中请求一个对象列表。我对几个 url 提出了一些请求并且工作正常。对我的本地主机应用程序的请求在邮递员上运行良好,但由于某种原因我还没弄清楚,当我在手机上尝试时它失败了。

这是android上的请求代码:

OkHttpClient client = new OkHttpClient();
   String url ="http://localhost:44374/Beacon/GetAllBeacons";


    Request request = new Request.Builder().url(url).build();
    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) { e.printStackTrace();

        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            if (response.isSuccessful()){
                String myResponse = response.body().string();
                Log.i(TAG, myResponse);
            }
        }
    });

这是错误消息:

W/System.err:     at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:242)
        at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:160)
        at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
        at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
        at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
        at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
        at okhttp3.RealCall$AsyncCall.execute(RealCall.java:147)
        at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
D/OplusInputMethodUtil: init DEBUG to false, update DEBUG_IME to false
W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:923)
    Caused by: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 44374) from /127.0.0.1 (port 35774) after 9999ms: isConnected failed: ECONNREFUSED (Connection refused)
W/System.err:     at libcore.io.IoBridge.isConnected(IoBridge.java:287)
        at libcore.io.IoBridge.connectErrno(IoBridge.java:192)
        at libcore.io.IoBridge.connect(IoBridge.java:134)
        at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
        at java.net.Socket.connect(Socket.java:631)
        at okhttp3.internal.platform.AndroidPlatform.connectSocket(AndroidPlatform.java:71)
        at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:240)
        ... 21 more
W/System.err: Caused by: android.system.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused)
        at libcore.io.IoBridge.isConnected(IoBridge.java:274)
        ... 31 more

我尝试过使用笔记本电脑的 IP 地址,但同样的错误。

我还将 network_security_config.xml 添加到我在 android 上的 res 文件夹中:

<?xml version="1.0" encoding="utf-8" ?>
</base-config>

<domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">localhost</domain>
</domain-config>

【问题讨论】:

  • 尝试使用127.0.0.1 而不是localhost
  • 还检查该端口是否首先使用netcat之类的东西打开
  • 是否有防火墙阻止请求?
  • @gtxtreme 首先感谢。端口已打开。尝试使用 127.0.0.1,仍然无法连接...
  • @Datz 已经禁用它

标签: java android asp.net-mvc connection httprequest


【解决方案1】:

我建议您先在IIS 上发布您的MVC 网络应用程序,然后在您的URL 中使用您的PC IP 而不是localhost

String url ="http://localhost:44374/Beacon/GetAllBeacons";

并确保您的 AndroidManifest.xml 具有 Internet 权限

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

【讨论】:

  • 已经试过了。 “ConnectionRefused”或超时,或其他错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
相关资源
最近更新 更多