java - 如何使用异步http post将数据从android studio发送到xampp并在真实设备中运行?

标签 java android eclipse apache import

我在异步 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/

相关文章:

java - 如何调试获取自定义对象的 hibernate/spring 数据的缓慢性能

java - SeekBar.java 有错误

java - Java中检查匹配文件的有效方法

java - 你使用 Java 注释吗?

java - Sdk 版本 28 未找到 AppCompatActivity 库

android - 全屏 TextInputEditText 不显示计数器

java - Windows BSOD 后什么可能导致 Eclipse 无法运行?

android - RxJava - 链接请求和更新 UI

css - eclipse pdt 中不明显的 lesscss 编译器

java - 如何在linux (debian) 上的Eclipse 中查看JRE 的源代码