2017-04-10 53 views
1

我是Android開發新手。我必須將Web服務集成到我的應用程序中,但它不起作用。有人可以幫我解決它。如何發送PHP的Web服務HTTP請求

以下是源代碼

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(); 
      } 

     } 
    }); 
} 

當我運行此代碼返回null性反應

PL告訴我這是怎麼回事,如何解決它。

API request sample

+0

我建議你使用OkHttp庫。有了這個庫,Http請求需要更少的努力。 –

+0

使用齊射進行異步服務器連接 –

+0

嘗試此鏈接http://www.androidhive.info/2012/01/android-json-parsing-tutorial/ –

回答

0

這是一個很好的例子來實現它。

https://www.simplifiedcoding.net/android-volley-tutorial-to-get-json-from-server/

通過它去。

+0

我以{「success」:「1」,「message」:「頸部的所有症狀」,「symptoms_data」:[{「id」:「68」,「parts_name」:「Neck Pain&Stiffness」 ,「描述」:「頸部疼痛和僵硬」,「症狀」:「2」,「圖像」:「上傳/ 1490950482.jpg」,「狀態」:「1」,「創建」:「2017-03-31 14:24:41「,」更新「:」2017-04-08 17:24:24「},那麼如何從這個peint消息 –

相關問題