2016-02-24 3 views
0

Мне нужно использовать android + php, но php также echo null ???? Я не знаю, где-нибудь есть ошибка? У меня есть поиск некоторой информации, я проверяю, что у меня есть Thread, и у меня естьandroid + php также echo null

<uses-permission android:name="android.permission.INTERNET" /> 

Прошу дать мне предложение!

PHP:

андроида:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getActionBar().setDisplayHomeAsUpEnabled(true); 
    setContentView(R.layout.foodrestaurdetail); 
    Intent intent = this.getIntent(); 
     name = intent.getStringExtra("name"); 
     vendor_sn = intent.getStringExtra("vendor_sn"); 
    Toast.makeText(getApplicationContext(),vendor_sn, Toast.LENGTH_SHORT).show(); 
    getActionBar().setTitle(name); 

    // setupWebView();//載入Webview 
      txtMessage = name; 

     Thread t = new Thread(new sendPostRunnable(name)); 
      t.start(); 
} 


private String sendPostDataToInternet(String strTxt) { 
    // TODO Auto-generated method stub 
    HttpPost httpRequest = new HttpPost(MAP_URL); 
    List<NameValuePair> params = new ArrayList<NameValuePair>(); 
    params.add(new BasicNameValuePair("name", strTxt)); 
    try{ 
     httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); 
     HttpResponse httpResponse = new  DefaultHttpClient().execute(httpRequest); 
     if (httpResponse.getStatusLine().getStatusCode() == 200){ 
      String strResult = EntityUtils.toString(httpResponse.getEntity()); 
      return strResult; 

     } 

    }catch (ClientProtocolException e){ 
     Toast.makeText(this, e.getMessage().toString(), Toast.LENGTH_SHORT).show(); 
     e.printStackTrace(); 
    }catch (IOException e){ 
     Toast.makeText(this, e.getMessage().toString(),  Toast.LENGTH_SHORT).show(); 
     e.printStackTrace(); 
    } catch (Exception e){ 
     Toast.makeText(this, e.getMessage().toString(), Toast.LENGTH_SHORT).show(); 
     e.printStackTrace(); 
    } 

    return null; 
} 

class sendPostRunnable implements Runnable{ 

    String strTxt = null; 


    public sendPostRunnable(String strTxt) { 
     // TODO Auto-generated constructor stub 
      this.strTxt = strTxt; 
    } 

    @Override 
    public void run() { 
     // TODO Auto-generated method stub 
     String result = sendPostDataToInternet(strTxt); 

      mHandler.obtainMessage(REFRESH_DATA, result).sendToTarget(); 
    } 

} 
+0

Вы называете Тост в улове блоков. Но это в потоке. Это невозможно. В результате получим e.getMessage(). – greenapps

+0

'но php также echo null' ??? Я не вижу эхо-сигнала. Кроме того, вы не читаете эхо от php. Итак, как бы вы узнали? – greenapps

ответ

0

HttpPost устарела. Я рекомендую использовать библиотеку Volley, просто, легко и полезно.

Вот пример:.

// Tag used to cancel the request 
String tag_string_req = "string_req"; 



String url = "http://api.androidhive.info/volley/string_response.html"; 

ProgressDialog pDialog = new ProgressDialog(this); 
pDialog.setMessage("Loading..."); 
pDialog.show();  

StringRequest strReq = new StringRequest(Method.GET, 
       url, new Response.Listener<String>() { 


       @Override 
       public void onResponse(String response) { 
        Log.d(TAG, response.toString()); 
        pDialog.hide(); 

       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d(TAG, "Error: " + error.getMessage()); 
        pDialog.hide(); 
       } 
      }); 

// Добавление запроса для запроса очереди AppController.getInstance() addToRequestQueue (strReq, tag_string_req);

Другой пример, использующий параметры:.

// Tag used to cancel the request 
String tag_json_obj = "json_obj_req"; 

String url = "http://api.androidhive.info/volley/person_object.json"; 

ProgressDialog pDialog = new ProgressDialog(this); 
pDialog.setMessage("Loading..."); 
pDialog.show();  

    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST, 
      url, null, 
      new Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 
        Log.d(TAG, response.toString()); 
        pDialog.hide(); 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d(TAG, "Error: " + error.getMessage()); 
        pDialog.hide(); 
       } 
      }) { 

     @Override 
     protected Map<String, String> getParams() { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("name", "Androidhive"); 
      params.put("email", "[email protected]"); 
      params.put("password", "password123"); 

      return params; 
     } 

    }; 

// Добавление запроса для запроса очереди AppController.getInstance() addToRequestQueue (jsonObjReq, tag_json_obj);

Вот хороший учебник:

http://www.androidhive.info/2014/05/android-working-with-volley-library-1/