2

i am trying to post data on wamp's apache localhost using port no 8080 using below given code.

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();
                    }
            }
        });
    }

}

whenever i run above code on emulator i got the following error.

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)  

i have also tried to use 10.0.0.2 as IP address as it was one of the solution posted in other post but did not work at all. i have tried lot to solve this error using net but could not succeed.

Ram kiran Pachigolla
  • 20,897
  • 15
  • 57
  • 78

3 Answers3

2

For accessing localhost (development sys) you have to use 10.0.2.2 (not 10.0.0.2).

for more information look here

Jayabal
  • 3,619
  • 3
  • 24
  • 32
1

Unless you are running a Web server in the emulator you need to use the IP address of your development machine. Use ifconfig (Linux, etc.) or ipconfig (Windows) to find out what the address is. Should be something like '192.168.xxx.xxx` for a local network.

Or use 10.0.2.2 to refer to the development machine's loopback interface as suggested in the other answer. Here's the link to the relevant docs for the emulator: http://developer.android.com/tools/devices/emulator.html#networkaddresses

Nikolay Elenkov
  • 52,576
  • 10
  • 84
  • 84
0

You can find ip from internet ..go to http://whatsmyip.net/ and this ip used in your project

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

Hemantvc
  • 2,111
  • 3
  • 30
  • 42
  • This may not give the correct address if the development machine is NAT-ted or uses a proxy. – Nikolay Elenkov Dec 03 '12 at 05:22
  • OP reported they are working locally. This won't work for that. All you will get is the IP that your service provider gives which is meaningless in this situation. – Micah Montoya Sep 16 '16 at 12:59