私はHttpClientを使用していましたが、廃止されましたので、今はHttpURLConnectionを使用したいと思いますが、正しく使用する方法はわかりません。Android HttpURLConnectionパラメータを送信
( "username"、 "password")という2つの文字列をPHPスクリプトに送信します。どうすればこれを達成できますか?
私はHttpClientを使用していましたが、廃止されましたので、今はHttpURLConnectionを使用したいと思いますが、正しく使用する方法はわかりません。Android HttpURLConnectionパラメータを送信
( "username"、 "password")という2つの文字列をPHPスクリプトに送信します。どうすればこれを達成できますか?
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();
あなたの答えをありがとうが、それは私がインターネット上で一日中探していることです、私はそれを取得しません。どのように私は文字列(パスワードとユーザー名)を送信します –
私は更新を参照していない、ありがとうございます! –
@GustavoSernaホープはそれを助けました.. :) :) Happieコーディングブロハ – Sanoop
@サヌープNoそれはNameValuePairを使用し、それは非難されています –