2011-02-08 17 views
19

Bir masaüstü uygulamasından bir URL'ye bağlanmaya çalışıyorum ve bu sorunun Başlığı bölümünde belirtilen hatayı alıyorum. sunucudan aynı URL'ye bağlanmayı denedi, hepsi iyi çalışıyor. URL'yi tarayıcıdan yüklediğimde, her şey yolunda gider. Aynı kodu sunucuda kullanıyorum. Kod bir kütüphanede çalışıyordu, çalışmadığı zaman, mevcut projede bir sınıfa çıkardım, ama işe yaramadı.URLConnection Hatası - java.io.IOException: Sunucu HTTP yanıt kodunu döndürdü: URL için 400

URL https://graph.facebook.com/me.

Kod parçası.

public static String post(String urlSpec, String data) throws Exception { 
    URL url = new URL(urlSpec); 
    URLConnection connection = url.openConnection(); 
    connection.setDoOutput(true); 
    OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); 
    writer.write(data); 
    writer.flush(); 

    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
    String line = ""; 
    StringBuilder builder = new StringBuilder(); 
    while((line = reader.readLine()) != null) { 
     builder.append(line); 
    } 
    return builder.toString(); 
} 

Burada biraz kafam karışık, normal bir masaüstü uygulaması olmayan bir sunucu uygulaması var mı?

Teşekkürler.

Tam yığın takibi

Feb 8, 2011 9:54:14 AM com.trinisoftinc.jiraffe.objects.FacebookAlbum create 
SEVERE: null 
java.io.IOException: Server returned HTTP response code: 400 for URL: https://graph.facebook.com/me 
     at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1313) 
     at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234) 
     at com.jiraffe.helpers.Util.post(Util.java:49) 
     at com.trinisoftinc.jiraffe.objects.FacebookAlbum.create(FacebookAlbum.java:211) 
     at com.trinisoftinc.jiraffe.objects.FacebookAlbum.main(FacebookAlbum.java:261) 
+0

Https'in sorunlara neden olabileceğinden şüphelenirim. Ama tam istisnası stacktrace – Bozho

cevap

4

Sonunda problemi buldum. Tabii ki benim kodum. Göndermediğim kodun bir kısmı, verilerin değeridir. Veriler yalnızca isim ve açıklama içermeli, ancak ad ve açıklamadan daha fazlasını iletiyorum.

50

DÜZENLEME:

: Sen facebook Öyle gibi hata akışından mesajı almak için kodunuzu değiştirebilirsiniz yanıt gönderiyor tam hata mesajı bulmalıyız

:
HttpURLConnection httpConn = (HttpURLConnection)connection; 
InputStream is; 
if (httpConn.getResponseCode() >= 400) { 
    is = httpConn.getErrorStream(); 
} else { 
    is = httpConn.getInputStream(); 
} 

Eğer burada kullanıcı bağlamı geçiyoruz nasıl bir göz atın size yardımcı olabilecek bazı bilgiler var 400 yanıt koduna arkasında hata mesajı enGörünüş:

"Facebook Platformu" ""Aktif bir erişim belirteci geçerli kullanıcı hakkında bilgi sorgulamak için kullanılmalıdır" invalid_request *

Sen bulacaksınız

çözelti here

 
HTTP/1.1 400 Bad Request 
... 
WWW-Authenticate: OAuth "Facebook Platform" "invalid_request" "An active access token must be used to query information about the current user." 
... 
+0

verin Verlette geçerken aynı belirteci geçiyorum. Belirteç doğru olduğundan eminim URL'yi tarayıcıya yüklemek için kullandım. Yine de yorumunuzu takdir ediyorum. Belki de facebook'un Masaüstü ve Web Uygulamaları isteklerini farklı şekilde ele aldığını düşünüyorum. –

+0

cevabı güncelledi; –

+1

@RyanFernandes tarafından gönderilen tam mesajın size gönderilmesi için hata akışına göz atmalısınız. Aksi takdirde: (httpConn.getResponseCode()> = 400) { = httpConn.getErrorStream(); } else { = httpConn.getInputStream(); } – Pashok

İlgili konular