2016-08-03 3 views
2

나는 HttpClient를 사용하곤 했었지만 지금은 더 이상 사용되지 않으므로 이제 HttpURLConnection을 사용하고 싶습니다. 그러나 올바르게 사용하는 방법을 찾을 수 없습니다.안드로이드 HttpURLConnection 매개 변수를 보내십시오

PHP 스크립트 ("사용자 이름", "비밀번호")에 게시하여 두 개의 문자열을 보내려고합니다. 이것을 어떻게 할 수 있습니까?

+0

@Sanaoop 아니요 그것은 NameValuePair를 사용하고 그것은 더 이상 사용되지 않습니다 –

답변

0

NameValuePair은 (는) 사용되지 않습니다. 이 매개 변수에 대한 ArrayList<NameValuePair>이 필요하지 않으면이

public String performPostCall(String requestURL, 
      HashMap<String, String> postDataParams) { 

     URL url; 
     String response = ""; 
     try { 
      url = new URL(requestURL); 

      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setReadTimeout(15000); 
      conn.setConnectTimeout(15000); 
      conn.setRequestMethod("POST"); 
      conn.setDoInput(true); 
      conn.setDoOutput(true); 


      OutputStream os = conn.getOutputStream(); 
      BufferedWriter writer = new BufferedWriter(
        new OutputStreamWriter(os, "UTF-8")); 
      writer.write(getPostDataString(postDataParams)); 

      writer.flush(); 
      writer.close(); 
      os.close(); 
      int responseCode=conn.getResponseCode(); 

      if (responseCode == HttpsURLConnection.HTTP_OK) { 
       String line; 
       BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream())); 
       while ((line=br.readLine()) != null) { 
        response+=line; 
       } 
      } 
      else { 
       response=""; 

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

     return response; 
    } 

....

private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException{ 
     StringBuilder result = new StringBuilder(); 
     boolean first = true; 
     for(Map.Entry<String, String> entry : params.entrySet()){ 
      if (first) 
       first = false; 
      else 
       result.append("&"); 

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

     return result.toString(); 
    } 

편집

을 시도,이은을 사용하여 쿼리 문자열을 구축 짧은 솔루션입니다 Uri.Builder 클래스 :

URL url = new URL("http://yoururl.com"); 
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); 
conn.setReadTimeout(10000); 
conn.setConnectTimeout(15000); 
conn.setRequestMethod("POST"); 
conn.setDoInput(true); 
conn.setDoOutput(true); 

Uri.Builder builder = new Uri.Builder() 
     .appendQueryParameter("firstParam", paramValue1) 
     .appendQueryParameter("secondParam", paramValue2) 
     .appendQueryParameter("thirdParam", paramValue3); 
String query = builder.build().getEncodedQuery(); 

OutputStream os = conn.getOutputStream(); 
BufferedWriter writer = new BufferedWriter(
      new OutputStreamWriter(os, "UTF-8")); 
writer.write(query); 
writer.flush(); 
writer.close(); 
os.close(); 

conn.connect(); 
+0

답장을 보내 주셔서 감사합니다. 그러나 그것은 인터넷에서 하루 종일 보았습니다. 그리고 나는 그것을 얻지 못합니다. 문자열 (암호 및 사용자 이름)을 보내려면 어떻게합니까 –

+0

업데이트를 보지 못했습니다. 정말 고마워요! –

+0

@GustavoSerna 희망 : .. :) :) Happie 코딩 broah – Sanoop

관련 문제