【发布时间】:2015-06-27 00:05:19
【问题描述】:
我想将此 HTML 请求帖子“翻译”为Android:
<form name="myForm" action="https://mysite.example" method="POST">
<input type="hidden" name="Key1" value=1>
<input type="hidden" name="Key2" value="2">
<input type="hidden" name="Key3" value="3">
</form>
请注意,第一个值是整数而不是字符串。
所以我尝试使用在 stackoverflow 上找到的代码:
public String performPostCall(String requestURL, HashMap<String, String> postDataParams) {
URL url;
String response = "";
try {
url = new URL(requestURL);
HttpsURLConnection conn = (HttpsURLConnection) 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();
}
在我正在做的 AsyncTask 中:
HashMap<String, String> parameters = new HashMap<>();
String url = "https://mysite.example";
String result;
parameters.put("Key1", "1");
parameters.put("Key2", "2");
parameters.put("Key3", "3");
result = performPostCall(url, parameters);
但这不起作用。怎么了?
【问题讨论】:
-
你需要嗅探数据包,看看每个平台之间有什么不同,这是逆向工程的方法。
-
罗伯特简单地响应等于“”..
-
尝试将http响应码输出到logcat?
-
Http响应码为200。
标签: java android httpurlconnection html-post