Java:

2010-08-06 20 views
20

göndermeden önce bir HttpURLConnection görüntülenme isteği HttpURLConnection kullanarak bir sunucuya bazı API çağrıları yapmak istiyorum. Ama istekler dönen başarılı değildir: Java:

<error> 
    <http_status>400 Bad Request</http_status> 
    <message>Unexpected request Content-Type header ''. Expecting 'application/x-www-form-urlencoded'.</message> 
</error> 

Yani "gerçek" içerik söz konusu sunucuya gönderiliyor ne olduğunu kontrol etmek istiyorum. Gerçek içerikle, tam HTTP isteğini kastediyorum.

Bunu nasıl görebileceğim hakkında herhangi bir fikrin var mı?

Düzenleme: HTTP yoklayıcısındaki veya bir şey gibi harici bir program kullanarak önlemek istiyorsanız ve bunun tutan ne olursa olsun orada bir işlev ya da bir özelliktir ya umuyordum: Burada benim sorununu çözmek gereken ilk yanıtlara göre aradığım bilgiler. Bu bilgiler manuel Bir tür sık ​​olacak şekilde bu sorunu karşı karşıyayım

(vb getRequestMethod(), gibi çeşitli işlevleri arayarak örneğin) yeniden inşa edilebilir eğer

bu durumda değilse, birileri biliyor Bu işlevsellik kendim inşa etmek için çabaya değer. Nasıl yapılacağını bilmeniz yeterlidir :)

+0

Olası yinelenen aşağıdaki özelliği

-Djava.util.logging.config.file=logging.properties 

ile java.logging etkinleştirerek hata ayıklama modunda HttpURLConnection koymak ve (JRE_HOME \ lib varsayılan) logging.properties koyabilirsiniz [Bir java HttpURLConnection trafiği için tel kaydı nasıl etkinleştirilir?] (http://stackoverflow.com/questions/1445919/how-to-enable-wire-logging-for-a-java-httpurlconnection-traffic) – Vadzim

cevap

14

Sen

sun.net.www.protocol.http.HttpURLConnection.level = ALL 
+0

Gerçekten yukarıda bahsettiğin kod ile ne yapmam gerektiğini biliyorum. t bu mu? (IDE olarak eclipse kullanarak) – Hirnhamster

+2

Ayrıca "Yapılandırma - Bağımsız Değişkenler" sekmesinde "java.util.logging.ConsoleHandler.level = FINEST" – Gili

+1

@ Hirnhamster öğesini ayarlamanız gerekir, VM argümanları bölümüne eklenir. – RealHowTo

0

Bilgisayarınız tarafından gönderilen veya alınan gerçek ağ paketlerini boşaltabilecek tcpdump gibi bir şey kullanın.

4

tcpdump çalışır, ancak istediğiniz şeyi yapmak zor olabilir. NetCat daha kullanıcı dostudur (burada proje sayfası: http://netcat.sourceforge.net/ - çoğu Unix platformu zaten içerir).

nc -l 9999 

Bu TCP bağlantı 9999 tarihinde dinleyecek ve bir HTTP istemci bağlandığında, bu isteğin tam metnini yazdırıldığı.