我在异步 http post 上遇到问题,如果使用模拟器运行,我已经设法将数据从 EditText 发送到服务器。但在使用真实设备时失败。如果使用 tge 真实设备运行,如何能够将数据从 android studio 发送到服务器(xampp)?
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
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 java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText value;
private Button btn;
private ProgressBar pb;
@Override
protected 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 void onClick(View v) {
if (value.getText().toString().length()<1){
Toast.makeText(getApplicationContext(),"Isi sesuatu Dong!",Toast.LENGTH_LONG).show();
}else{
pb.setVisibility(View.VISIBLE);
}
}
private class MyAsyncTask extends AsyncTask<String,Integer,Double>{
@Override
protected Double doInBackground(String... params) {
postData(params[0]);
return null;
}
protected void onPostExecute(Double hasil) {
pb.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(),"Berhasil dikirim",Toast.LENGTH_LONG).show();
}
protected void onProgressUpdate(Integer... progress) {
pb.setProgress(progress[0]);
}
public void postData(String nilaiYangDikirim){
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://10.0.2.2/http/index.php");
try {
List<NameValuePair> nilai = new ArrayList<NameValuePair>();
nilai.add(new BasicNameValuePair("myHttpData", nilaiYangDikirim));
httpPost.setEntity(new UrlEncodedFormEntity(nilai));
HttpResponse response = httpClient.execute(httpPost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
}
}
最佳答案
如果您要使用真实设备测试代码,则必须记下系统的 IP 地址。
转到 CMD->输入 ipconfig/all(windows) 并在 ubuntu 中输入 ip [选项]
然后记下无线局域网适配器的 IP 地址(可能以 192.168.* .* 开头)
然后转到 xampp 文件夹并搜索 httpd-xampp.conf
输入来自 192.168 的允许。 *。 * 在文件末尾
在系统中创建Adhoc网络或wifi P2P网络
连接到手机中的P2p网络
最后将代码改成这样
HttpPost httpPost = new HttpPost("http://192.168.*.*/http/index.php");
关于java - 如何使用异步http post将数据从android studio发送到xampp并在真实设备中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37358252/