2014-04-14 1 views
1

나는 facebook 소프트웨어를 만들고 있는데, 친구 목록을 얻으려면 fql 쿼리를 만들어야합니다. 나는 아래의 코드를 사용한다Java 400 오류가 있지만 브라우저에서 열립니다.

String url = "https://graph.facebook.com/fql?q=SELECT uid, name, pic_square FROM user WHERE uid = me() OR uid IN (SELECT uid2 FROM friend WHERE uid1 =  me())&access_token="+access; 
    url = url.replace(" ", "%20"); 
    URL obj = new URL(url); 
    HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 
    // optional default is GET 
    con.setRequestMethod("POST"); 
    //add request header 
    String USER_AGENT = "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36"; 
    con.setRequestProperty("User-Agent", USER_AGENT); 
    int responseCode = con.getResponseCode(); 
    System.out.println(responseCode); 
    BufferedReader in = new BufferedReader(
      new InputStreamReader(con.getInputStream())); 
    String inputLine; 
    StringBuffer response = new StringBuffer(); 

    while ((inputLine = in.readLine()) != null) { 
     response.append(inputLine); 
    } 

    in.close(); 

그러나 나는 항상 400 에러를 얻는 것처럼 보인다. 나는 % 20까지 공백을 바꾸려고 시도했지만 효과가 없다. 브라우저에서 링크를 열면 제대로 열립니다.

+1

이 호스트에 POST 요청을 보내려고합니다. 수동으로 시도 할 때 400 : 지원되지 않는 게시 요청을받습니다. 브라우저에서 할 때, 당신은 GET을 보내고 있다고 가정합니다. – Kon

+0

맞습니다. 어떻게 그걸 간과 할 수 있습니까? –

+0

친구 목록을 가져오고 싶다면 그래프 API를 사용할 수 있다고 생각합니다. me/friends –

답변

1

나는 부끄럽다. 해결책은 실제로 POST 줄이어야한다.

String url = "https://graph.facebook.com/fql?q=SELECT uid, name, pic_square FROM user WHERE uid = me() OR uid IN (SELECT uid2 FROM friend WHERE uid1 =  me())&access_token="+access; 
url = url.replace(" ", "%20"); 
URL obj = new URL(url); 
HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 
// optional default is GET 
con.setRequestMethod("GET"); 
//add request header 
String USER_AGENT = "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36"; 
con.setRequestProperty("User-Agent", USER_AGENT); 
int responseCode = con.getResponseCode(); 
System.out.println(responseCode); 
BufferedReader in = new BufferedReader(
     new InputStreamReader(con.getInputStream())); 
String inputLine; 
StringBuffer response = new StringBuffer(); 

while ((inputLine = in.readLine()) != null) { 
    response.append(inputLine); 
} 

in.close(); 
+0

다른 사람들이 유용하다고 느낄 수 있도록 자신의 질문에 대한 답변을 게시 해 주셔서 감사합니다. . 크롬을 사용하는 경우 Postman과 같은 확장 프로그램을 사용하여 모든 요청을 먼저 보내고 출력 유형을 확인하십시오. Fiddler와 같은 도구를 사용하면 도움이됩니다. :) – Kon