2013-07-09 37 views
0

我基本上是試圖模仿什麼一直done here通過Android應用程序中使用HttpURLConnection類數據的網站,但由於某種原因,數據不能儘快,因爲它試圖發佈數據返回(返回罰款當我刪除writer.write(finalResult)線)。不可以對Android的

所有我現在想要的是能夠搜索用戶的數據一旦我發送的用戶名。

這裏是我下面的代碼:

try { 
     URL u = new URL(url); 
     HttpURLConnection c = (HttpURLConnection) u.openConnection(); 
     c.setRequestMethod("POST"); 
     c.setRequestProperty("Content-length", "0"); 
     c.setConnectTimeout(timeout); 
     c.setReadTimeout(timeout); 
     c.setDoInput(true); 
     c.setDoOutput(true); 

     //Attempting to send data! 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("username", paramValue)); 

     OutputStream os = c.getOutputStream(); 
     BufferedWriter writer = new BufferedWriter(
       new OutputStreamWriter(os, "UTF-8")); 
     String finalResult = getQuery(params); 
     Log.d("params", finalResult); 
     writer.write(finalResult); 
     writer.close(); 
     os.close(); 

     c.connect(); 
     int status = c.getResponseCode(); 

     switch (status) { 
      case 200: 
      case 201: 
       BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream())); 
       StringBuilder sb = new StringBuilder(); 
       String line; 
       while ((line = br.readLine()) != null) { 
        sb.append(line+"\n"); 
       } 
       br.close(); 
       result = sb.toString(); 
     } 



    } catch (MalformedURLException ex) { 
     Log.e("log_tag", "Error converting result "); 
    } catch (IOException ex) { 
     Log.e("log_tag", "Error in http connection "); 
    } 
    //json code! 
    //parse json data 
    try{ 
     JSONArray jArray = new JSONArray(result); 
     //for each object in our json array 
     for(int i =0; i < jArray.length(); i++){ 
      JSONObject json_data =jArray.getJSONObject(i); 
      String address = ""; 
      //Checks for missing data in address - Need a class for all fields 
      if (json_data.isNull("address")){ 
       address = "N/A";    
      } 
      else 
      { 
       address = json_data.getString("address");; 
      } 
      //read one line of the response 
      myListView.setText("Username: "+json_data.getString("username") 
        +"/" + "Name: " + json_data.getString("name") 
        +"/" + "E-mail: " + json_data.getString("email") 
        +"/" + "Address: " + address); 
      } 
     } 
     catch(JSONException e){ 
      Log.e("log_tag", "Error parsing data"+e.toString()); 
     } 
} 

private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException 
{ 
    StringBuilder result = new StringBuilder(); 
    boolean first = true; 

    for (NameValuePair pair : params) 
    { 
     if (first) 
      first = false; 
     else 
      result.append("&"); 

     result.append(URLEncoder.encode(pair.getName(), "UTF-8")); 
     result.append("="); 
     result.append(URLEncoder.encode(pair.getValue(), "UTF-8")); 
    } 

    return result.toString(); 
} 

這裏是我的PHP腳本:

<?php 
$searchuser = $_GET["username"]; 
$databasehost = databasehost; 
$databasename = database; 
$databaseusername = username; 
$databasepassword = password; 

$con = mysql_connect($databasehost, $databaseusername, $databasepassword) or die(mysql_error()); 
mysql_select_db($databasename) or die(mysql_error()); 

$query = "SELECT * FROM testusers"; 
$sth = mysql_query($query); 

if (mysql_errno()) { 
    header("HTTP/1.1 500 Internal Server Error"); 
    echo $query."\n"; 
    echo mysql_error(); 
} 
else 
{ 
    $rows = array(); 
    while ($r = mysql_fetch_assoc($sth)){ 
     $rows[] = $r; 
    } 
    print json_encode($rows); 
} 
?> 
+1

解決它!我已經從以前的代碼下面的行必須被刪除或它不會工作: 'c.setRequestProperty(「內容長度」,「0」);' –

回答

1

既然你設置頁眉Content-Length爲0,服務器甚至不讀你的文章。 ..所以,什麼你發送不接收。你應該設置Content-LengthfinalResult.length()

0

刪除此,

c.setRequestProperty("Content-length", "0");