2012-11-06 74 views
18
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.net.HttpURLConnection;  
import java.net.URL;  
import java.io.DataOutputStream;   
import java.io.InputStream; 

public class TestingPost { 

public static void main(String args[]) { 

    URL url; 
    HttpURLConnection connection = null; 
    String targetURL=".....";//here is my local server url 
    String urlParameters="{\"clubhash\":\"100457d41b9-ab22-4825-9393-ac7f6e8ff961\",\"username\":\"anonymous\",\"message\":\"simply awesome\",\"timestamp\":\"2012/11/05 13:00:00\"}"; 

    try { 
     //Create connection 
     url = new URL(targetURL); 
     connection = (HttpURLConnection)url.openConnection(); 
     connection.setRequestMethod("POST"); 
     connection.setRequestProperty("Content-Type", 
      "application/x-www-form-urlencoded"); 

     connection.setRequestProperty("Content-Length", "" + 
       Integer.toString(urlParameters.getBytes().length)); 
     connection.setRequestProperty("Content-Language", "en-US"); 

     connection.setUseCaches (false); 
     connection.setDoInput(true); 
     connection.setDoOutput(true); 

     //Send request 
     DataOutputStream wr = new DataOutputStream (
        connection.getOutputStream()); 
     wr.writeBytes (urlParameters); 
     wr.flush(); 
     wr.close(); 

     //Get Response  
     InputStream is = connection.getInputStream(); 
     BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 
     String line; 
     StringBuffer response = new StringBuffer(); 
     while((line = rd.readLine()) != null) { 
     response.append(line); 
     response.append('\r'); 
     } 
     rd.close(); 
     System.out.println("message="+response.toString()); 

    } catch (Exception e) { 

     e.printStackTrace(); 

    } finally { 

     if(connection != null) { 
     connection.disconnect(); 
     } 
    } 
    } 

} 

我想使用HTTP POST方法發送JSON對象。以上是代碼,但我越來越HTTP 415使用POST發送JSON對象

java.io.IOException: Server returned HTTP response code: 415 for URL: .... 
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
at TestingPost.main(TestingPost.java:38)" 

我的代碼有什麼問題?

回答

36

你的HTTP響應代碼爲

415 Unsupported Media Type 

這意味着服務器無法處理您發送給它的格式。你的HTTP請求設置這個頭:

Content-Type: application/x-www-form-urlencoded 

這是如果表單提交的瀏覽器發送的內容類型。如果你想發送JSON,使用此標題:

Content-Type: application/json 
+0

謝謝,它確實有效! –

0

我正確地傳遞

Content-Type: application/json 

但是,因爲我也路過

Accept: application/json 

我的服務器仍然拒絕請求哪在我的情況下是不允許的。