HTTP Post Request Со списком в качестве параметра данных - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь написать контрольный пример автоматизации для проверки службы, которая принимает список в качестве параметра http body / data.Когда я выполняю эту операцию через браузер, она работает должным образом (ниже приведен список успешных запросов)

curl 'https://mytest.org.com/admin/addValue' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:63.0) Gecko/20100101 Firefox/63.0' -H 'Accept: application/json' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Content-Type: application/json' -H 'CSRF_TOKEN: 18243bk3lu8hakfosidu56b40de4356dkm3u643j0e2ldcsc85si' -H 'Connection: keep-alive' -H 'Cookie: dslang=US-EN; ac9-at=Nq41QacCjw2tdOUBw6aKlq/yybAARv9GvFe/F; geo=US; cpl=Dsuy09ercyiX9MfjSvjDKPq45Qgqe+0gp81c4DFb000=' --data '[{"label":"MultiValueId","value":"California","instanceId":2049}]'

Хотя, когда я пытаюсь сделать то же самое с моим набором автоматизации, значения не сохраняются, как ожидалось -

        HttpPost httppost = new HttpPost("https://mytest.org.com/admin/addValue");
        httppost.addHeader(HttpHeaders.CONNECTION, "keep-alive");
        httppost.addHeader(HttpHeaders.USER_AGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0.2 Safari/604.4.7");
        httppost.addHeader(HttpHeaders.ACCEPT, "application/json");
        httppost.addHeader(HttpHeaders.ACCEPT_ENCODING, "gzip,deflate,br");
        httppost.addHeader(HttpHeaders.ACCEPT_LANGUAGE, "en-us");
        httppost.addHeader(HttpHeaders.CONTENT_TYPE, "application/json");
        httppost.addHeader("CSRF_TOKEN", MyConstant.CSRF_TOKEN);
        httppost.addHeader("Cookie", MyConstant.cookie);

        ArrayList<NameValuePair> valParameters=new ArrayList<NameValuePair>();
        valParameters.add(new BasicNameValuePair("label", "MultiValueId"));
        valParameters.add(new BasicNameValuePair("value", "California"));
        valParameters.add(new BasicNameValuePair("instanceId", "2049"));

        List postParameters=new ArrayList<Object>();
        postParameters.add(valParameters);
        httppost.setEntity(new UrlEncodedFormEntity(postParameters, "UTF-8"));
        httppost.setHeader("Content-type", "application/json");

        System.out.println(httppost.toString());
        HttpResponse resp = HttpsSSLClient.createSSLInsecureClient().execute(httppost);
        System.out.println("Response --> " + resp.toString()+resp.getEntity());
        System.out.println("Response Entity--> " + resp.getEntity());

Ниже приведен параметр http для данных поста -

[{"label": "MultiValueId", "value": "DEF", "instanceId": 2049}, {"label": "MultiValueId", "value": "GHI", "instanceId": 2049}]

Кроме того, я узнал, что ниже показано, как служба написана в конце приложеният.е. он принимает список в качестве параметра -

  @POST
  @Consumes(MediaType.APPLICATION_JSON)
  @Produces(MediaType.APPLICATION_JSON)
  @Path("/addValue")

  public ValueUploadResponse addLabelValue(List<GenericUXData> fieldList)  {

        ValueUploadResponse response = new ValueUploadResponse();
        List<GenericUXData> savedValues = new ArrayList<GenericUXData>();
        List<GenericUXData> errorValues = new ArrayList<GenericUXData>();
        if (fieldList == null || fieldList.size() < 1) {
              response.setErrorMessage("No Field List Found");
              return response;
        }
......
......
......

Пожалуйста, предложите, как этого добиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...