2017-06-29 66 views
0

我必須將參數列表傳遞給Http POST調用。Java中的HttpPost參數BasicNameValuePair

實際的JSON從服務器預期的是:

{ 
"par1": "val1", 
"par1": "val1", 
"par3": ["val1", "val2", "val3"] 
} 

這裏是Java的存根:

List<NameValuePair> parameters = new ArrayList<>(); 
parameters.add(new BasicNameValuePair("par1", "val1")); 
parameters.add(new BasicNameValuePair("par2", "val2")); 
parameters.add(new BasicNameValuePair("par3", "["val1", "val2", "val3"]")); 

這是我的參數傳遞給HttpPost對象:

httpPost.setEntity(new UrlEncodedFormEntity(parameters)); 

的端點期望一個陣列,因爲4°線說,我不知道如何通過它作爲AR射線。

嘗試#2搜索,發現了以下解決方案:

//inside for loop 
parameters.add(new BasicNameValuePair(String.format("par[%d]", incremental), "value"+incremental)); 

//inside for loop 
parameters.add(new BasicNameValuePair("par[]", "value"+incremental)); 

String values = "" + 
      "[" + 
       "\"val1\"," + 
       "\"val2\"," + 
       "\"val3\"" 
      "]"; 


parameters.add(new BasicNameValuePair("par3", values)); 

其實,我無法調試服務器端,所以我不能說他們是否正確。從現在起他們都沒有工作過。

我該如何在java上創建它?

回答

0

從服務器實際JSON是

「PAR1」: 「VAL1」,

「PAR1」: 「VAL1」,

「PAR3」:[ 「VAL1」,」 VAL2" , 「VAL3」]

我認爲這個問題是您得到

「PAR1」: 「VAL1」

從服務器端

兩次。 第二更改爲

par2的: 'val2的'