2016-06-15 3 views
1

현재 PHP 스크립트를 사용하고 JSON 값을 반환하는 외부 URL을 통해 데이터를 검색하고 있습니다. 그것은 잘 작동합니다.Asynctask를 통해 외부 URL에 문자열 게시

$name = $_POST['name']; //this was sent from the Android app. How do I send this from the app. 
$sql = "SELECT name FROM tablename WHERE category = '$name'"; 
$result = mysqli_query($con, $sql) or die("Error in Selecting"); 

참고 : 나는 발리를 사용하지 않으

하지만 어떻게 내가이 PHP 스크립트에서 다음을 수행 할 수 있도록 문자열 쿼리에 사용되는 전송 않습니다.

현재 URL에 값을 보내지 않는 My AsyncTask 확장 클래스입니다.

class BackgroundTask extends AsyncTask<Void,Void,String> { 

     final String jsonUrl = "http://example.com/getdata.php"; 

     @Override 
     protected String doInBackground(Void... params) { 
      try { 
       URL url = new URL(jsonUrl); 
       HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); 
       InputStream in = httpURLConnection.getInputStream(); 
       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in)); 
       StringBuilder stringBuilder = new StringBuilder(); 

       while ((jsonString = bufferedReader.readLine()) != null){ 
        stringBuilder.append(jsonString+"\n"); 
       } 

       bufferedReader.close(); 
       in.close(); 
       httpURLConnection.disconnect(); 
       return stringBuilder.toString().trim(); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(String s) { 
      super.onPostExecute(s); 

      products = new ArrayList<>(); 

      try { 
       jsonObject = new JSONObject(s); 
       String category = jsonObject.getString("viewProduct"); 
       JSONArray jsonArray = new JSONArray(category); 

       for(int x=0; x < jsonArray.length(); x++){ 
        JSONObject jsonPart = jsonArray.getJSONObject(x); 
        products.add(jsonPart.getString("name")); 
       } 

       adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, android.R.id.text1, products); 
       productListView.setAdapter(adapter); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
+0

당신이 URL 자체에 문자열을 추가 할 ? – jitinsharma

+0

@jitinsharma 아니요. 그냥 URL에 문자열을 게시하고 싶습니다. – JasSy

답변

0

그냥 POST 요청의 본문으로 데이터를 전송에 대해 이야기하는 경우는 다음과 같이 함께 할 수

HttpURLConnection conn= (HttpURLConnection) url.openConnection();   
conn.setDoOutput(true); 
conn.setRequestMethod("POST"); 
conn.setRequestProperty("Content-Length", Integer.toString(postDataLength)); 
try { 
    DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); 
    wr.write(postData); 
} catch (IOException ex) {} 
+0

doInBackground 메서드 내에서 발생합니다. – JasSy

+0

그래, 그것은 동기화 네트워크 전송을 포함하므로 확실히 당신은 주 스레드에서 그것을 원할 것입니다. –

+0

이 경우 String을 보내는 방법은 무엇입니까? wr.write 메서드 서명은 해당 postData 값에 대해 int 및 byte 배열 만 사용합니다. – JasSy