2012-03-02 48 views
0

我絕對把我的頭髮撕掉了。Java .setRequestMethod()中的HTTP POST請求沒有任何作用

我想在Java中發出一個HTTP POST請求,但它不斷髮送它作爲GET。我採用了幾種不同的方式發送POST請求,但所有這些方式都只是以GET方式發送。

這是我目前有:

 URL url = new URL("https://api.soundcloud.com/oauth2/token"); 
     URLConnection conn = url.openConnection(); 
     conn.setDoOutput(true); 

     OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
     wr.write(data); 
     wr.close(); 

     // Get the response 
      BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
      String line; 
      while ((line = rd.readLine()) != null) { 
       resp += line; 
      } 
      rd.close(); 

我就在計算器上那個conn.setDoOuput(真)應該自動進行連接的POST一個職位閱讀;然而,當我通過代碼進行調試時,受保護的成員conn.method保持爲GET。

我也試着將url.openConnection()作爲一個HttpURLConnection並在其上調用.setRequestMethod(「POST」),它完全沒有改變conn.method。

作爲獎勵,我試圖做soundcloud身份驗證,基本上我認爲這樣做的每種方式都是徹底的失敗......也許有人有更好的解決方案呢?

+0

可能發生的重複[發送HTTP POST請求在Java](http://stackoverflow.com/questions/3324717/sending-http-post-request-in-java) – 2012-03-02 05:06:41

+0

您可以看到一個POST示例在這裏:http://stackoverflow.com/questions/9508606/how-to-authenticate-against-website-using-apache-httpclient-4-2-1-or – alfasin 2012-03-02 05:16:00

+0

這些都沒有回答我的問題...什麼特別我在做黃?我曾嘗試將其明確設置爲「POST」方法,但仍然無效。 – kand 2012-03-02 05:34:46

回答

1

您是否嘗試過使用SoundCloud的Java SDK?

https://github.com/soundcloud/java-api-wrapper

這應該大多數HTTP/OAuth2用戶從你的代碼了。

但即使您希望更多地控制您所做的工作,通常使用適當的HTTP客戶端庫(如Apache)是一個好主意,而不是試圖再次爭取對其基本的Java SE支持。檢出:http://hc.apache.org/httpcomponents-client-ga/index.html

+0

是的,我檢查了包裝,我只是想看看我是否可以自己做oauth材料。無論如何,我現在可能只是最終走上這條路線,因爲我試圖儘快完成這項工作。任何想法爲什麼setRequestMethod(「POST」)不起作用?這似乎很簡單,但它不工作...令人沮喪> :( – kand 2012-03-02 14:50:06