【问题标题】:ECONNREFUSED (Connection refused) android connect to webserviceECONNREFUSED(连接被拒绝)android连接到网络服务
【发布时间】:2014-10-10 20:38:15
【问题描述】:

尝试使用soapui 连接到Web 服务时出现连接被拒绝错误。当我尝试在 URL 中使用 127.0.0.1 时,错误是 ECONNREFUSED 但是当我尝试 10.0.2.2 时,错误是连接超时。请有人帮忙。谢谢。这是我在 Main Activity 上的代码。

private static final String SOAP_ACTION = "http://tempuri.org/GetSMSOutgoing";
    private static final String INSERT_INCOMING_SMS = "SaveSMSIncoming";
    private static final String GET_OUTGOING_SMS = "GetSMSOutgoing";
    private static final String NAMESPACE = "http://tempuri.org/";
    private static final String URL = "http://127.0.0.1:62499/WSsmsandroid.asmx?wsdl";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            getOutgoingSMS();
        } catch (Exception e) {
            Log.d("NOT CONNECTED: IOException", "NOT CONNECTED");
            e.printStackTrace();
        }

    }
});

thread.start();

}

public String getOutgoingSMS() {
        String outgoingSMS = null;

        SoapObject request = new SoapObject(NAMESPACE, GET_OUTGOING_SMS);
        request.addProperty("sentBy", "+639209100000");

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);

        HttpTransportSE ht = new HttpTransportSE(URL);
        try {
            ht.call(SOAP_ACTION, envelope);

            SoapObject response2 = (SoapObject) envelope.getResponse();
            denemeList = new String[response2.getPropertyCount()];

            for (int i = 0; i < response2.getPropertyCount(); i++) {
                denemeList[i] = response2.getProperty(i).toString();
            }
            outgoingSMS = response2.toString();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return outgoingSMS;
    }

【问题讨论】:

  • 请检查您的服务器IP地址。如果您使用的是本地服务器,只需将 IP 放入 Web 浏览器即可检查地址。如果在这些解决方案之后错误仍然存​​在,请检查您 PC 上的防火墙选项。防火墙不允许本地服务器。

标签: java android web-services econnrefused


【解决方案1】:

要从 Android 模拟器访问您的 PC 本地主机,请使用 10.0.2.2 而不是 127.0.0.1。 localhost 或 127.0.0.1 指的是仿真设备本身,而不是运行仿真器的主机。

对于 Genymotion 使用:10.0.3.2 而不是 10.0.2.2

参考:http://developer.android.com/tools/devices/emulator.html#networkaddresses

PS:已经在connect failed: ECONNREFUSED回复了

【讨论】:

    【解决方案2】:

    你的 ip 是错误的。 127.0.0.1 是环回。除非您在本地电话上运行 Web 服务,否则这不太可能是您想要的。 10.0.2.2 是用于 NAT 的未分配网络上的随机 IP,因此除非您使用的 wifi 连接在该 IP 上有服务,否则它不太可能是正确的。那么你真正想连接到哪里?

    【讨论】:

    • 我正在尝试在本地主机中运行。我从 c# 运行 web 服务,url 是localhost:62499/WSsmsandroid.asmx
    • 您正在本地电话上运行网络服务并通过本地电话访问它?无论你真正想要做什么,那都是绝对错误的方式。
    • 我在 localhost web 服务器中运行 web 服务。
    • 而你为什么这样做?你是本地人。使用常规服务。 Web 服务只会降低您的安全性,为错误添加额外的向量(像这样),并使事情复杂化。没有理由这样做。除非您计划最终允许其他设备访问该服务,否则这将是一个主要问题,因为 wifi 和蜂窝网络都经过大量 NAT。
    • 我正在使用网络服务从服务器获取值。我真的很困惑。
    【解决方案3】:

    检查您的 IP 地址,我认为不需要端口号。一旦尝试删除 URL 中的端口号。

    【讨论】:

    • 我删除了端口号和它的拒绝连接错误。
    • 使用这样的 url "10.0.0.8/WSsmsandroid.asmx?wsdl" 注意:用你的 ip 地址替换 10.0.0.8。
    • Nalla thamaasayulla IP
    猜你喜欢
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    相关资源
    最近更新 更多