0

Visual Basic 2010 で構築されたサーバーを作成しています。そのプログラムは、使用するデータベースに挿入/更新/削除できます。サーバー上のデータベースを Android のデータベースと同期するために使用するローカル Web サービスを作成しました。

次の Android コードを使用します。

package com.zelacroix.bukumenu;

import java.io.IOException;
import java.io.InputStream;

import org.apache.http.*;
import org.apache.http.client.*;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.params.*;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

public class Sinc extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sinc);
        Toast.makeText(getApplicationContext(), getKategori(), 5).show();
    }

    public String getKategori(){
        HttpParams httpParameters = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParameters, 60000);
        HttpConnectionParams.setSoTimeout(httpParameters, 60000);
        HttpClient client=new DefaultHttpClient(httpParameters);
        HttpPost httpPost = new HttpPost("http://192.168.1.2:1924/TugasAkhir/Service.asmx/getKategori");
        HttpResponse response;
        String result="";
        try
        {
            response=client.execute(httpPost);
            HttpEntity entity= response.getEntity();
            DataHandler dataHandler = new DataHandler();
            if (entity!=null)
            {
                InputStream instream = entity.getContent();
                result = dataHandler.convertStreamToString(instream);
                instream.close();
            }
        } catch (ConnectTimeoutException e) {
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), e.toString(), 100).show();
        } catch (IOException e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(), e.toString(), 100).show();
        }
        return result;
    }


}

エラーが発生します: org.apache.http.conn.httphostconnectexception connection to ``http://192.168.1.2:1924..... refused

参考までに.. このコードは、エミュレーターを使用して IP アドレスを 10.0.2.2 に変更すると正常に実行されます。

このコードは、ホストされているオンライン Web サービスにアクセスしたときにも正常に実行されます。Web サービスをローカルとして実行し、ラップトップの IP (192.168.1.2) を使用して Android デバイスでアクセスしようとした場合にのみ失敗します。

WIFIを使用しています。

このエラーを修正するにはどうすればよいですか?

4

4 に答える 4

2

追加してみてください:

if (android.os.Build.VERSION.SDK_INT > 9) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
}

これは役に立ちますか?

于 2012-07-23T14:18:54.417 に答える
0

最終的に解決されました..問題はVisual Studio 2010でIISの設定が非常に複雑であるため、Visual Studio 2008でWebサービスを開発しようとするとIISは正常に動作します! Android は、接続が拒否されることなく Web サービスにアクセスできます。

于 2012-07-26T01:17:03.273 に答える
0

この問題に遭遇しましたが、解決策は、慣れ親しんだものでした。

<uses-permission android:name="android.permission.INTERNET"/>マニフェストにあなたのことを書いてください。

于 2014-02-18T02:05:12.623 に答える
0

ラップトップのIPとデバイスのIPを確認してください。

同じサブネット マスクにある必要があります

ラップトップおよびモバイル (Android) デバイスの IP は192.168.XXでなければなりません

于 2012-07-23T14:27:48.657 に答える