【发布时间】:2011-08-26 23:26:04
【问题描述】:
在过去的两个小时里,我一直在尝试向此页面http://www.halebop.se/butik/byt_behall_nummer/ 发出 POST 请求,并尝试发送 numberToPort。但是我得到了一堆 cookie 和一个 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());
}
【问题讨论】:
-
您目前尝试使用的 Android 代码如何?
-
太乱了,我的第一个安卓应用。如果我无法得到 emboss 的建议,将发布。
标签: java android http http-post