2013-07-31 64 views
1

我是新来的Android和我试图从我的Android应用程序发布数据到本地主机。虽然它没有显示任何错误,并且总是说发送了命令,但它不会写入文件,也可能不会发送任何数据。任何人都可以发现问题,或者告诉我如何修复它?发布数据到本地主机在Android应用程序

MainActivity.java

package com.example.register; 

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import android.app.Activity; 
import android.opengl.Visibility; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ProgressBar; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity implements OnClickListener{ 

private EditText value; 
private Button btn; 
private ProgressBar pb; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
value=(EditText)findViewById(R.id.editText1); 
btn=(Button)findViewById(R.id.button1); 
pb=(ProgressBar)findViewById(R.id.progressBar1); 
pb.setVisibility(View.GONE); 
btn.setOnClickListener(this); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
getMenuInflater().inflate(R.menu.main, menu); 
return true; 
} 

public void onClick(View v) { 
// TODO Auto-generated method stub 
if(value.getText().toString().length()<1){ 
// out of range 
Toast.makeText(this, "please enter something", Toast.LENGTH_LONG).show(); 
}else{ 
pb.setVisibility(View.VISIBLE); 
new MyAsyncTask().execute(value.getText().toString()); 
} 

} 

private class MyAsyncTask extends AsyncTask<String, Integer, Double>{ 

@Override 
protected Double doInBackground(String... params) { 
// TODO Auto-generated method stub 
postData(params[0]); 
return null; 
} 

protected void onPostExecute(Double result){ 
pb.setVisibility(View.GONE); 
Toast.makeText(getApplicationContext(), "command sent", Toast.LENGTH_LONG).show(); 
} 
protected void onProgressUpdate(Integer... progress){ 
pb.setProgress(progress[0]); 
} 

public void postData(String valueIWantToSend) { 
// Create a new HttpClient and Post Header 
HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://localhost/text.php"); 

try { 
// Add your data 
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("myHttpData", valueIWantToSend)); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

// Execute HTTP Post Request 
HttpResponse response = httpclient.execute(httppost); 

} catch (ClientProtocolException e) { 
// TODO Auto-generated catch block 
} catch (IOException e) { 
// TODO Auto-generated catch block 
} 
} 

} 
} 

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<TextView 
android:id="@+id/textView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentTop="true" 
android:layout_centerHorizontal="true" 
android:layout_marginTop="20dp" 
android:text="Enter Something Below:" 
android:textAppearance="?android:attr/textAppearanceLarge" /> 

<EditText 
android:id="@+id/editText1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_below="@+id/textView1" 
android:layout_centerHorizontal="true" 
android:layout_marginTop="30dp" 
android:ems="10" 
android:hint="" 
> 

<requestFocus /> 
</EditText> 

<ProgressBar 
android:id="@+id/progressBar1" 
style="?android:attr/progressBarStyleLarge" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_below="@+id/editText1" 
android:layout_centerHorizontal="true" 
android:layout_marginTop="24dp" /> 

<Button 
android:id="@+id/button1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignLeft="@+id/textView1" 
android:layout_alignRight="@+id/editText1" 
android:layout_below="@+id/progressBar1" 
android:layout_marginTop="24dp" 
android:text="Submit" /> 

</RelativeLayout> 
+0

打印响应字符串?你到了那里? – KOTIOS

回答

4

你必须使用10.0.2.2 IP地址与本地主机系统连接。

HttpPost httppost = new HttpPost("http://localhost/text.php"); 

应该

HttpPost httppost = new HttpPost("http://10.0.2.2/text.php"); 
+0

我有使用这个,但它仍然没有发布,其实我是新来的机器人,你能告诉我我在哪里可以检查什么问题,因为现在它不显示蚂蚁错误onclick,只是显示命令发送 –

+0

@RohitGoel检查您在'HttpResponse response = httpclient.execute(httppost);'中获得的响应。 –

+0

你能告诉我如何打印回应 –

2
  1. 使用IP地址,而不是本地主机。例如:

    HttpPost httppost = new HttpPost("http://192.168.0.10/mypage.php"); 
    
  2. 添加Internet权限在AndroidManifest.xml例如:

+0

以哪种方式是'192.168.0.10' localhost? –

+1

我的世界中localhost的IP地址是'127.0.0.1' ... –

+0

@MdKamruzzaman:你无法从真相中走出来。首先,这是MongoDB绑定地址的问题。其次,虽然机器的所有其他IP可能会更改,但localhost或127.0.0.1绝不会更改,因为它们是以这种方式定义的。 –

相关问题