2017-08-30 5 views
1

他のアプリケーションと通信する必要のあるアプリケーションがあります。私はJSONオブジェクトに設定されたパラメータaccountIdを取得しようとしています第二のアプリケーションでSpring、JSON別のアプリケーションを呼び出すと値が送信されない

public List<ContactsBO> getZingyContactsByCompanyId(int companyId) throws Exception { 
    String url="http://localhost:8080/ZingyApp/getContactsToBSAByAccountId"; 
    URL object=new URL(url); 
    JSONObject account = new JSONObject(); 
    String accountId = "58fd8c58abced355f69bf0bb"; 
    account.put("accountId", accountId); 
    HttpURLConnection conn = (HttpURLConnection) object.openConnection(); 
    conn.setConnectTimeout(50000); 
    conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); 
    conn.setDoInput(true); 
    conn.setDoOutput(true); 
    conn.setRequestMethod("POST"); 

    OutputStream os = conn.getOutputStream(); 
    OutputStreamWriter wr = new OutputStreamWriter(os); 
    wr.write(account.toString()); 
    wr.flush(); 
    os.close(); 

    String json_response = ""; 
    BufferedReader br = null; 

    if (conn.getResponseCode() == 200) { 
     br = new BufferedReader(new 
     InputStreamReader(conn.getInputStream())); 
    } else { 
     br = new BufferedReader(new 
     InputStreamReader(conn.getErrorStream())); 
    } 
    String text = ""; 
    while ((text = br.readLine()) != null) { 
     json_response += text; 
    } 
    String contacts = json_response; 
    System.out.println("Contacts:"+contacts); 

    return null; 
} 

:として私はそれを言及した最初のアプリケーションで

ここ
@RequestMapping(value="/getContactsToBSAByAccountId",method=RequestMethod.POST) 
public @ResponseBody List<Contacts> getContactsByAccountId(@ModelAttribute("accountId") String accountId) { 
    System.out.println("Inside Account Details:"+accountId); 
    List<Contacts> contacts=salesContactService.getContactsByAccountId("58fd8c58abced355f69bf0bb"); 
    return contacts; 
} 

accountIdnullです。

@RequestParamsを変更したときに、メソッド自体が呼び出されず、@ModelAttributeに変更すると400 errorになりましたが、値はポストされません。

誰かがこれについて提案できますか?

+0

'ModelAttribute'の代わりに' @RequestBody Map objectMap'を試して、 'Stringのようなマップから取得してください。accountId =(String)objectMap.get(" accountId ")' – nurgasemetey

答えて

0

@RequestBody地図のObjectMapの代わりに、ModelAttributeとこれは私のために働いた文字列のaccountId =(String)をobjectMap.get( "アカウントID")のようなマップから

を取得します。

関連する問題