2016-08-03 8 views
2

私はHttpClientを使用していましたが、廃止されましたので、今はHttpURLConnectionを使用したいと思いますが、正しく使用する方法はわかりません。Android HttpURLConnectionパラメータを送信

( "username"、 "password")という2つの文字列をPHPスクリプトに送信します。どうすればこれを達成できますか?

+0

@サヌープNoそれはNameValuePairを使用し、それは非難されています –

答えて

0

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(); 
    } 

EDIT

あなたはパラメータのためにArrayList<NameValuePair>を必要としない場合、これは使用してクエリ文字列を構築する短いソリューションです。 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コーディングブロハ – Sanoop

関連する問題