2017-05-05 7 views
-2

文字列httpsURL = "https://m.facebook.com/login/identify/?ctx=recover&c=https%3A%2F%2Fm.facebook.com%2Flogin%2F&lwv=100&_rdr";JavaのFacebookでのHTTP POSTリクエストが正しく機能していませんか?

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

出力に検索メールアドレス(例:[email protected])の結果のHTMLコードが表示されるはずですが、アカウント検索に使用されたデフォルト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)リダイレクトを以下の場合は、あなたがこの(More infoを行う場合を除き、HttpsURLConnectionのは、それが元の応答からもらったクッキーを設定していません):

これら二つを置く

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を使用しました。それは働いた、それはクッキーマネージャーを含むかもしれない –

関連する問題