2

soapui を使用して Web サービスに接続しようとすると、接続拒否エラーが発生します。URLに127.0.0.1を使ってみたところECONNREFUSEDというエラーが出ましたが、10.0.2.2にしてみたら接続タイムアウトというエラーが出ました。誰か助けてください。ありがとう。これがメインアクティビティの私のコードです。

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;
    }
4

3 に答える 3

8

Android エミュレーターから PC のローカルホストにアクセスするには、127.0.0.1 の代わりに 10.0.2.2 を使用します。localhost または 127.0.0.1 は、エミュレーターが実行されているホストではなく、エミュレートされたデバイス自体を指します。

Genymotionを使用する場合: 10.0.2.2の代わりに10.0.3.2

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

PS .: connect failed: ECONNREFUSEDで既に回答されています

于 2015-03-10T20:44:41.327 に答える
0

あなたのIPは間違っています。127.0.0.1 はループバックです。ローカルの電話で Web サービスを実行している場合を除き、それはおそらくあなたが望むものではありません。10.0.2.2 は、NAT に使用される割り当てられていないネットワーク上のランダムな IP であるため、その IP でサービスを提供する Wi-Fi 接続を使用している場合を除き、正しくない可能性があります。それで、あなたは本当にどこに接続しようとしていますか?

于 2014-08-17T23:55:59.383 に答える