Java for Facebook中的HTTP发布请求无法正常工作?
String httpsURL =“https://m.facebook.com/login/identify/?ctx=recover&c=https%3A%2F%2Fm.facebook.com%2Flogin%2F&lwv=100&_rdr”;Java for Facebook中的HTTP发布请求无法正常工作?
String query = "email="+URLEncoder.encode("[email protected]","UTF-8");
URL myurl = new URL(httpsURL);
HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-length", String.valueOf(query.length()));
con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0;Windows98;DigExt)");
con.setDoOutput(true);
con.setDoInput(true);
DataOutputStream output = new DataOutputStream(con.getOutputStream());
output.writeBytes(query);
output.close();
DataInputStream input = new DataInputStream(con.getInputStream());
for(int c = input.read(); c != -1; c = input.read())
System.out.print((char)c);
input.close();
System.out.println("Resp Code:"+con .getResponseCode());
System.out.println("Resp Message:"+ con .getResponseMessage());
![enter image description here](https://i.stack.imgur.com/gVUc3.png)![enter image description here](https://i.stack.imgur.com/3RihL.png)
我作出了以下2修改代码,使其工作:
1)从URL的末尾删除了_rdr参数。看起来像当你添加它时,它总是将你重定向到初始页面。所以:
String httpsURL = "https://m.facebook.com/login/identify/?ctx=recover&c=https%3A%2F%2Fm.facebook.com%2Flogin%2F&lwv=100";
2)以下的重定向,HttpsURLConnection的不把它从原来的响应得到了饼干,除非你做这个(More info):
CookieHandler.setDefault(new CookieManager());
把这两在一起,我们在下面有最后的工作代码。这是一个working demo。我添加了BufferedReader来读取稍微好看的控制台输出的响应,但这不是必需的。
String httpsURL = "https://m.facebook.com/login/identify/?ctx=recover&c=https%3A%2F%2Fm.facebook.com%2Flogin%2F&lwv=100";
String query = "email=" + URLEncoder.encode("[email protected]", "UTF-8");
CookieHandler.setDefault(new CookieManager());
URL myurl = new URL(httpsURL);
HttpsURLConnection con = (HttpsURLConnection) myurl.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-length", String.valueOf(query.length()));
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0;Windows98;DigExt)");
con.setDoOutput(true);
con.setDoInput(true);
DataOutputStream output = new DataOutputStream(con.getOutputStream());
output.writeBytes(query);
output.close();
BufferedReader input = new BufferedReader(new InputStreamReader(con.getInputStream()));
for (int c = input.read(); c != -1; c = input.read())
System.out.print((char) c);
input.close();
System.out.println("Resp Code:" + con.getResponseCode());
System.out.println("Resp Message:" + con.getResponseMessage());
我使用Apache HttpClient And它的工作,可能是它包括cookie管理器 –
你对这段代码有什么问题? – Vasan
请提供更多细节。什么工作不正常,即你期望这个代码做什么,它实际上做了什么?阅读[帮助]了解如何提出良好问题的更多信息。 – Gumbo
输出应显示搜索电子邮件地址结果的html代码([email protected]),但它显示用于搜索帐户的默认url的代码 –