2

以下のコードを使用して、ポート番号 8080 を使用して、wamp の apache localhost にデータを投稿しようとしています。

public class postdata extends Activity
{
    Button btnpost;
    EditText txtname,txtsalary;
    TextView lblstatus;
    String hostname;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.main3);
        btnpost=(Button)this.findViewById(R.id.btnpost);
        txtname=(EditText)this.findViewById(R.id.txtname);
        txtsalary=(EditText)this.findViewById(R.id.txtsalary);
        final HttpClient client = new DefaultHttpClient();
        final HttpPost post = new HttpPost("http://127.0.0.1:8080/andy1/script2.php");
        btnpost.setOnClickListener(new View.OnClickListener()
        {

            @Override
            public void onClick(View arg0)
            {
                try
                {
                    List<NameValuePair> pair = new ArrayList<NameValuePair>(2);
                    pair.add(new BasicNameValuePair("txtname",txtname.getText().toString()));
                    pair.add(new BasicNameValuePair("txtsalary",txtsalary.getText().toString()));
                    post.setEntity(new UrlEncodedFormEntity(pair));
                    HttpResponse response = client.execute(post);
                    Toast.makeText(getApplicationContext(), "Record Saved",1000).show();
                }
                 catch (ClientProtocolException e)
                    {
                        // TODO Auto-generated catch block
                    }
                    catch (IOException e)
                    {
                        Toast.makeText(getApplicationContext(), "Error in uploading",1000).show();
                    }
            }
        });
    }

}

エミュレーターで上記のコードを実行するたびに、次のエラーが発生しました。

12-03 10:10:51.237: E/AndroidRuntime(281): FATAL EXCEPTION: main
12-03 10:10:51.237: E/AndroidRuntime(281): java.lang.IllegalArgumentException: Host name may not be null
12-03 10:10:51.237: E/AndroidRuntime(281):  at org.apache.http.HttpHost.<init>(HttpHost.java:83)
12-03 10:10:51.237: E/AndroidRuntime(281):  at org.apache.http.impl.client.AbstractHttpClient.determineTarget(AbstractHttpClient.java:497)
12-03 10:10:51.237: E/AndroidRuntime(281):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
12-03 10:10:51.237: E/AndroidRuntime(281):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
12-03 10:10:51.237: E/AndroidRuntime(281):  at demo.network.postdata$1.onClick(postdata.java:65)
12-03 10:10:51.237: E/AndroidRuntime(281):  at android.view.View.performClick(View.java:2408)
12-03 10:10:51.237: E/AndroidRuntime(281):  at android.view.View$PerformClick.run(View.java:8816)
12-03 10:10:51.237: E/AndroidRuntime(281):  at android.os.Handler.handleCallback(Handler.java:587)
12-03 10:10:51.237: E/AndroidRuntime(281):  at android.os.Handler.dispatchMessage(Handler.java:92)
12-03 10:10:51.237: E/AndroidRuntime(281):  at android.os.Looper.loop(Looper.java:123)
12-03 10:10:51.237: E/AndroidRuntime(281):  at android.app.ActivityThread.main(ActivityThread.java:4627)
12-03 10:10:51.237: E/AndroidRuntime(281):  at java.lang.reflect.Method.invokeNative(Native Method)
12-03 10:10:51.237: E/AndroidRuntime(281):  at java.lang.reflect.Method.invoke(Method.java:521)
12-03 10:10:51.237: E/AndroidRuntime(281):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-03 10:10:51.237: E/AndroidRuntime(281):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-03 10:10:51.237: E/AndroidRuntime(281):  at dalvik.system.NativeStart.main(Native Method)  

私はまた、10.0.0.2 を IP アドレスとして使用しようとしましたが、これは他の投稿に投稿されたソリューションの 1 つでしたが、まったく機能しませんでした。ネットを使用してこのエラーを解決するために多くのことを試みましたが、成功しませんでした。

4

3 に答える 3

2

localhost (開発システム) にアクセスするには、(10.0.0.2 ではなく) 10.0.2.2を使用する必要があります。

詳細については、こちらをご覧ください

于 2012-12-03T05:33:48.840 に答える
1

エミュレータで Web サーバーを実行している場合を除き、開発マシンの IP アドレスを使用する必要があります。ifconfig(Linux など) またはipconfig(Windows) を使用して、アドレスを調べます。ローカル ネットワークの場合は「192.168.xxx.xxx」のようになります。

または、10.0.2.2 を使用して、他の回答で提案されているように、開発マシンのループバック インターフェイスを参照してください。エミュレータの関連ドキュメントへのリンクは次のとおりです: http://developer.android.com/tools/devices/emulator.html#networkaddresses

于 2012-12-03T05:21:39.943 に答える
0

インターネットから IP を見つけることができます..http://whatsmyip.net/ に移動しこの IP をプロジェクトで使用します

最終的な HttpPost 投稿 = 新しい HttpPost("http:// ip :8080/andy1/script2.php");

于 2012-12-03T05:21:21.753 に答える