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

Posted

技术标签:

【中文标题】如何使用异步http post从android studio发送数据到xampp并在真实设备中运行?【英文标题】:How to sending data from android studio with asychronous http post to xampp and run it in real device? 【发布时间】:2016-09-18 09:38:13 【问题描述】:

我在异步 http 帖子上遇到问题,如果使用模拟器运行,我已经设法将数据从 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
            
        
    

【问题讨论】:

试试这个链接可能对你有帮助***.com/questions/2938502/… 谢谢你的建议 【参考方案1】:

如果您要使用真机测试代码,则必须记下系统的 IP 地址。

转到 CMD->输入 ipconfig /all(windows) 并在 ubuntu 中输入 ip [options]

然后记下无线网卡的IP地址(可能以192.168.*.*开头)

然后转到 xampp 文件夹并搜索 httpd-xampp.conf

从 192.168 输入允许。 *。 * 在文件末尾

在系统中创建 Adhoc 网络或 wifi P2P 网络

在移动端连接到 P2p 网络

最后把代码改成这样

 HttpPost httpPost = new HttpPost("http://192.168.*.*/http/index.php");

【讨论】:

以上是关于如何使用异步http post从android studio发送数据到xampp并在真实设备中运行?的主要内容,如果未能解决你的问题,请参考以下文章

android中post请求怎么传输内容

从 Android 发送 JSON HTTP POST 请求

Android异步消息机制

我们可以像在 android asyncTask 中一样显示加载状态,直到我们在 swift 中使用 HTTP Post 请求得到响应

Fragment 如何从使用 http 和异步任务获取数据的 MainActivity 类中获取数据?

如何使用 post 请求异步将图像上传到 url?