2015-04-30 84 views
1

我哈瓦POST方法,我嘗試添加參數「ENC」:爲什麼QueryParam返回null

protected void sendPost(String url, String encData) throws Exception { 

    URL obj = new URL(url); 
    HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 

    //add request header 
    con.setRequestMethod("POST"); 
    con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); 

    // Send post request 
    con.setDoOutput(true); 
    OutputStreamWriter wr = new OutputStreamWriter(con.getOutputStream()); 
    wr.write("enc="+encData); 
    wr.flush(); 
    wr.close(); 

    int responseCode = con.getResponseCode(); 
    System.out.println("\nSending 'POST' request to URL : " + url); 
    //System.out.println("Post parameters : " + urlParameters); 
    System.out.println("Response Code : " + responseCode); 
} 

然而,在我的服務器代碼(下)我收到NULL值試圖獲得時數據。它只是一個字符串,不是JSON或任何幻想。我也嘗試將參數寫成「?enc =」+ endData,但這也不起作用。另外路徑encRead被輸入到網址中,所以我不認爲這是問題。

@Path("/encRead") 
    @POST 
    public void decryptData(@QueryParam("enc") String enc) { 

     System.out.println("got endData: "+enc); 

    } 

到目前爲止,我已經從引用的Jersey POST Method is receiving null values as parameters答案,但還是拿出了無解

回答

1

問題是你試圖寫入請求的主體,與wr.write("enc="+encData);@QueryParam s應該在query string。所以這反而會工作

public static void main(String[] args) throws Exception { 
    sendPost(".../encRead", "HelloWorld"); 
} 

protected static void sendPost(String url, String encData) throws Exception { 
    String concatUrl = url + "?enc=" + encData; 
    URL obj = new URL(concatUrl); 
    [...] 
    //wr.write("enc=" + encData); 
+0

謝謝,這工作,因爲它應該是 – rambossa