Android 如何发送php Web服务的http请求

Android 如何发送php Web服务的http请求,android,Android,我是android开发的新手。我必须在我的应用程序中集成web服务,但它不起作用。有人能帮我解决这个问题吗 下面是源代码 public class Registration extends Activity { EditText edfnm,edlnm,edmobile,edemail,edpass; Button b1; TextView tv1; private DefaultHttpClient httpclient; private HttpPost httppost; private

我是android开发的新手。我必须在我的应用程序中集成web服务,但它不起作用。有人能帮我解决这个问题吗

下面是源代码

public class Registration extends Activity {

EditText edfnm,edlnm,edmobile,edemail,edpass;
Button b1;
TextView tv1;
private DefaultHttpClient httpclient;
private HttpPost httppost;
private ArrayList<NameValuePair> lst;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_registration);
    edfnm=(EditText)findViewById(R.id.edfirst);
    edlnm=(EditText)findViewById(R.id.edlast);
    edmobile=(EditText)findViewById(R.id.edmobile);
    edemail=(EditText)findViewById(R.id.edemail);
    edpass=(EditText)findViewById(R.id.edpass);
    b1=(Button)findViewById(R.id.btnreg);
    tv1=(TextView)findViewById(R.id.textView1);
    b1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            httpclient=new DefaultHttpClient();
            httppost=new HttpPost("http://amwaveswellness.com/protocol_suggestion/webservice/register.php");

            lst=new ArrayList<NameValuePair>();

            lst.add(new BasicNameValuePair("first_name",edfnm.getText().toString()));
            lst.add(new BasicNameValuePair("last_name",edlnm.getText().toString()));
            lst.add(new BasicNameValuePair("mobile",edmobile.getText().toString()));
            lst.add(new BasicNameValuePair("email",edemail.getText().toString()));
            lst.add(new BasicNameValuePair("password",edpass.getText().toString()));

            try {
                httppost.setEntity(new UrlEncodedFormEntity(lst));
                new add_data().execute();
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        class add_data extends AsyncTask<String, integer, String>{
            String jsonstring;

            @Override
            protected void onPreExecute() {
                // TODO Auto-generated method stub
                super.onPreExecute();
            }

            @Override
            protected String doInBackground(String... arg0) {
                // TODO Auto-generated method stub
                try {
                    HttpResponse httpresponse=httpclient.execute(httppost);
                    jsonstring=EntityUtils.toString(httpresponse.getEntity());
                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return jsonstring;
            }
            @Override
            protected void onPostExecute(String result) {
                // TODO Auto-generated method stub
                super.onPostExecute(result);
            tv1.setText(result);
            Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
            }

        }
    });
}
公共类注册扩展活动{
EditText edfnm、edlnm、edmobile、Edmail、edpass;
按钮b1;
文本视图tv1;
私有默认httpclient httpclient;
私有HttpPost HttpPost;
私人ArrayList lst;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u注册);
edfnm=(EditText)findViewById(R.id.edfirst);
edlnm=(EditText)findViewById(R.id.edlast);
edmobile=(EditText)findViewById(R.id.edmobile);
edemail=(EditText)findViewById(R.id.edemail);
edpass=(EditText)findViewById(R.id.edpass);
b1=(按钮)findViewById(R.id.btnreg);
tv1=(TextView)findViewById(R.id.textView1);
b1.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
httpclient=新的DefaultHttpClient();
httppost=新的httppost(“http://amwaveswellness.com/protocol_suggestion/webservice/register.php");
lst=新的ArrayList();
添加(新的BasicNameValuePair(“first_name”,edfnm.getText().toString());
添加(新的BasicNameValuePair(“姓氏”,edlnm.getText().toString());
添加(新的BasicNameValuePair(“mobile”,edmobile.getText().toString());
添加(新的BasicNameValuePair(“email”,edemail.getText().toString());
添加(新的BasicNameValuePair(“密码”,edpass.getText().toString());
试一试{
setEntity(新的UrlEncodedFormEntity(lst));
新添加数据().execute();
}捕获(不支持的编码异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
类添加\u数据扩展异步任务{
字符串jsonstring;
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(字符串…arg0){
//TODO自动生成的方法存根
试一试{
HttpResponse HttpResponse=httpclient.execute(httppost);
jsonstring=EntityUtils.toString(httpresponse.getEntity());
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回jsonstring;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
tv1.setText(结果);
Toast.makeText(getApplicationContext(),result,Toast.LENGTH_LONG.show();
}
}
});
}
当我运行此代码时,它返回
null
responce

请告诉我发生了什么事以及如何应对


这是一个很好的例子


这是一个很好的例子来实现它


仔细阅读。

我建议您使用OkHttp库。使用此库,Http请求需要更少的努力。使用Volley进行异步服务器连接此链接将所有HttpClient和HttpPost代码放在doInBackground中。onClick中没有任何内容。我建议您使用OkHttp库。使用此库,Http请求需要更少的努力。使用Volley f或异步服务器连接此链接将所有HttpClient和HttpPost代码放在doInBackground中。onClick中没有任何内容。我得到的响应为{“成功”:“1”,“消息”:“颈部所有症状”,“症状数据”:[{“id”:“68”,“部件名称”:“颈部疼痛和僵硬”,“描述”:“颈部疼痛和僵硬”,“症状”:“2”,“图像”:“upload/1490950482.jpg”,“status:”1“,”created:”2017-03-31 14:24:41“,”updated:”2017-04-08 17:24:24“},那么如何从这个消息中获取响应为“{”success:”1“,”message:”颈部的所有症状“,”症状数据“:[{”id:”68“,”零件名称“:”颈部疼痛和僵硬“,”描述“:”颈部疼痛和僵硬“,”症状“:”2“,”图片“:”上传/1490950482.jpg“,”状态“:”1“,”创建“:”2017-03-31 14:24:41“,”更新“:”2017-04-08 17:24:24”},那么如何从中获取消息