[英]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.