나는 HttpClient를 사용하곤 했었지만 지금은 더 이상 사용되지 않으므로 이제 HttpURLConnection을 사용하고 싶습니다. 그러나 올바르게 사용하는 방법을 찾을 수 없습니다.안드로이드 HttpURLConnection 매개 변수를 보내십시오
PHP 스크립트 ("사용자 이름", "비밀번호")에 게시하여 두 개의 문자열을 보내려고합니다. 이것을 어떻게 할 수 있습니까?
나는 HttpClient를 사용하곤 했었지만 지금은 더 이상 사용되지 않으므로 이제 HttpURLConnection을 사용하고 싶습니다. 그러나 올바르게 사용하는 방법을 찾을 수 없습니다.안드로이드 HttpURLConnection 매개 변수를 보내십시오
PHP 스크립트 ("사용자 이름", "비밀번호")에 게시하여 두 개의 문자열을 보내려고합니다. 이것을 어떻게 할 수 있습니까?
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();
답장을 보내 주셔서 감사합니다. 그러나 그것은 인터넷에서 하루 종일 보았습니다. 그리고 나는 그것을 얻지 못합니다. 문자열 (암호 및 사용자 이름)을 보내려면 어떻게합니까 –
업데이트를 보지 못했습니다. 정말 고마워요! –
@GustavoSerna 희망 : .. :) :) Happie 코딩 broah – Sanoop
@Sanaoop 아니요 그것은 NameValuePair를 사용하고 그것은 더 이상 사용되지 않습니다 –