2017-05-05 115 views
-2

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) 
+0

你對這段代碼有什麼問題? – Vasan

+0

請提供更多細節。什麼工作不正常,即你期望這個代碼做什麼,它實際上做了什麼?閱讀[幫助]瞭解如何提出良好問題的更多信息。 – Gumbo

+0

輸出應顯示搜索電子郵件地址結果的html代碼([email protected]),但它顯示用於搜索帳戶的默認url的代碼 –

回答

0

我作出了以下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()); 
+0

我使用Apache HttpClient And它的工作,可能是它包括cookie管理器 –