在过去的两个小时里,我一直在尝试向此页http://www.halebop.se/butik/byt_behall_nummer/发出POST请求,并尝试发送 numberToPort 。然而,我得到了一堆饼干,302暂时移回。
我想做的就是发送带有号码的POST请求并返回最后一页。在iOS上,我使用ASIHTTPRequest来处理重定向和cookie。
iOS代码:
NSString *halebopURLString = @"http://www.halebop.se/kontantkort/byt_behall_nummer/#";
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:halebopURLString]];
[request setPostValue:halebopNumber forKey:@"numberToPort"];
[request setPostValue:@"continue" forKey:@"action"];
[request setPostValue:@"submit" forKey:@"submit"];
[request startSynchronous];
我如何在Android上执行此操作?
作为替代方案,PHP解决方案是可以接受的。
编辑:试过这个,它没有输出也没有例外。我有互联网许可。预期结果:发送POST,获取302和cookie,将cookie从302发送到URL并获取HTML(使用FireBug检查)但是我什么都没得到。
try {
InputStream myInputStream =null;
URL url;
url = new URL("http://www.halebop.se/kontantkort/byt_behall_nummer/#");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setInstanceFollowRedirects(true);
conn.setRequestMethod("POST");
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write("numberToPort="+n+"&action=continue&submit=submit");
wr.flush();
myInputStream = conn.getInputStream();
wr.close();
BufferedReader rd = new BufferedReader(new InputStreamReader(myInputStream), 4096);
String line;
StringBuilder sbResult = new StringBuilder();
while ((line = rd.readLine()) != null) {
sbResult.append(line);
Log.d(TAG, "Line "+line);
}
rd.close();
String contentOfMyInputStream = sbResult.toString();
Log.d(TAG, "Output "+contentOfMyInputStream);
} catch (Exception e) {
Log.d(TAG,e.getMessage());
}
答案 0 :(得分:3)
以下是设置帖子参数的方法:
HttpPost httpost = new HttpPost(LOGIN_URL);
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("test1","test1" ));
nvps.add(new BasicNameValuePair("test2", "test2" ));
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
response = getResponse(httpost);
Here是有关代码的详细说明。
我还解释了如何从您的回复中检索HTTP Cookie并将其设置为请求here
答案 1 :(得分:1)
如果您正在使用HttpUrlConnection,那么HttpUrlConnection#setFollowRedirects可能就是您所追求的。将其设置为true
以使其自动解决重定向问题。更好地使用setInstanceFollowRedirects(true)
因为盲目地遵循重定向(静态setFollowRedirects
会导致什么)从安全角度来看是不受欢迎的。