2015-10-04 3 views
0

Мой PHP код:HttpPost запрос от Android на PHP страницу (параметры не проходя)

<?php 
$data = 'basic'; 

if($_POST["tag"]){ 
    $data = $data.$_POST['tag']; 
} 

if($_GET["tag"]){ 
    $data = $data.$_GET['tag']; 
} 

echo $data; 
?> 

Мой Android код:

String url = http: //<IP>/sreeweb/sample.php; 
List params = new ArrayList(); 
params.add(new BasicNameValuePair("tag", "services")); 

InputStream is = null; 

try { 

    DefaultHttpClient httpClient = new DefaultHttpClient(); 
    HttpPost httpPost = new HttpPost(url); 
    httpPost.setHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded"); 
    httpPost.setHeader("Accept", "*/*"); 
    httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); 
    HttpResponse httpResponse = httpClient.execute(httpPost); 
    Log.d("msg", "res : " + httpResponse.getStatusLine().getStatusCode()); //200 

    HttpEntity httpEntity = httpResponse.getEntity(); 

    is = httpEntity.getContent(); 
    Log.d("msg", "" + is); 
} catch (UnsupportedEncodingException e) { 
    e.printStackTrace(); 
} catch (ClientProtocolException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

BufferedReader reader; 
StringBuilder stringBuilder = null; 

try { 
    reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); 

    stringBuilder = new StringBuilder(); 
    String line = null; 

    while ((line = reader.readLine()) != null) { 
     stringBuilder.append(line + "\n"); 
    } 
    is.close(); 

} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

String result = stringBuilder.toString(); 
Log.e(TAG, result); 

Метод GET работает. Но метод POST не работает, когда я вызываю его с Android. Он вызывает страницу PHP, но значения не передаются.

Но когда я вызываю метод POST с клиента REST через Chrome (chrome-extension: //hgmloofddffdnphfgcellkdfbfbjeloo/RestClient.html), он работает, и значения проходят правильно. Но почему не от Android?

Я даже попытался, используя следующий код, но он не работает:

try { 

    String data = URLEncoder.encode("tag", "UTF-8") + "=" + URLEncoder.encode("services", "UTF-8"); 
    URL url = new URL(finalUrl); 
    HttpURLConnection conn = null; 
    conn = (HttpURLConnection) url.openConnection(); 
      conn.setRequestProperty("Content-type", "application/x-www-form-urlencoded"); 
    conn.setRequestProperty("Accept", "*/*"); 
    // Allow Inputs 
    conn.setDoInput(true); 
    conn.setDoOutput(true); 
    // Use a post method. 
    conn.setRequestMethod("POST"); 

    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
    wr.write(data); 
    wr.flush(); 

    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 

    StringBuilder sb = new StringBuilder(); 
    String line = null; 

    // Read Server Response 
    while ((line = reader.readLine()) != null) { 
     sb.append(line); 
     break; 
    } 

    Log.e(TAG, "postMethod " + sb.toString()); 
    return sb.toString(); 


} catch (Exception e) { 
    return new String("Exception: " + e.getMessage()); 
} 

ответ

0
public JSONObject makeHttpRequest(String url, String method, 
     List<NameValuePair> params) { 

    // Make HTTP request 
    try { 

     // checking request method 
     if (method == "POST") { 

      // now defaultHttpClient object 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      httpPost.setEntity(new UrlEncodedFormEntity(params)); 

      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 

     } else if (method == "GET") { 
      // request method is GET 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      String paramString = URLEncodedUtils.format(params, "utf-8"); 
      url += "?" + paramString; 
      HttpGet httpGet = new HttpGet(url); 

      HttpResponse httpResponse = httpClient.execute(httpGet); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 
     } 

    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    //HERE is WILL READ AND CONVERTED INTO STRING THEN PASS IT TO MAIN ACTIVITY 
    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       is, "iso-8859-1"), 8); 
     StringBuilder str = new StringBuilder(); 
     String strLine = null; 
     while ((strLine = reader.readLine()) != null) { 
      str.append(strLine + "\n"); 
     } 
     is.close(); 
     json = str.toString(); 
    } catch (Exception e) { 

    } 

    // now will try to parse the string into JSON object 
    try { 
     jsonObj = new JSONObject(json); 
    } catch (JSONException e) { 

    } 

    return jsonObj; 

} 
+0

же код, который я упомянул в этом вопросе. это не работает – sreekanth

Смежные вопросы