簡體   English   中英

無法使用 android 模擬器將數據發布到 apache localhost

[英]can not post data to apache localhost using android emulator

我正在嘗試使用以下給定代碼使用端口號 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 地址,因為它是其他帖子中發布的解決方案之一,但根本不起作用。 我已經嘗試了很多使用網絡來解決這個錯誤,但沒有成功。

要訪問本地主機(開發系統),您必須使用10.0.2.2 (不是 10.0.0.2)。

欲了解更多信息,請看這里

除非您在模擬器中運行 Web 服務器,否則您需要使用開發機器的 IP 地址。 使用ifconfig (Linux 等)或ipconfig (Windows)找出地址是什么。 對於本地網絡,應該類似於“192.168.xxx.xxx”。

或者使用 10.0.2.2 來引用其他答案中建議的開發機器的環回接口。 這是模擬器相關文檔的鏈接: http : //developer.android.com/tools/devices/emulator.html#networkaddresses

您可以從互聯網上找到 ip ..go 到http://whatsmyip.net/並且這個 ip 在您的項目中使用

final HttpPost post = new HttpPost("http:// ip :8080/andy1/script2.php");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM