Java-объект автоматически преобразуется в связанный хэш-файл через HttpURLConnection после вызова - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь опубликовать с помощью HttpURLConnction какую-то конечную точку службы покоя Проблема в том, что объект, который я пытаюсь передать с помощью метода post, может получить конечную точку получателя, но не может привести его к исходному типу. Объект автоматически преобразуется в связанную карту. Как я могу вернуть объект. Заранее спасибо.

Пример кода приложения отправителя:

UsersInformation userInfo = new UsersInformation();

        InputUserObject inputUserObject = new InputUserObject();
        inputUserObject.setUserObject("usersInformation", userInfo);


Gson gson = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting()
                .create();

        Type type = new TypeToken<InputUserObject>() {
        }.getType();
        String jsonInString = gson.toJson(inputUserObject, type);


String requestURL = "receiver endpoint";
        URL url;
        try {
            url = new URL( requestURL );

            HttpURLConnection conn;
            conn = (HttpURLConnection) url.openConnection();

            conn.setDoOutput( true );
            conn.setInstanceFollowRedirects( false );
            conn.setRequestMethod( "POST" );
            conn.setRequestProperty( "Content-Type", "application/json");
            conn.setRequestProperty( "charset", "utf-8");
            conn.setUseCaches( false );

            try( DataOutputStream wr = new DataOutputStream( conn.getOutputStream())) {
              wr.writeChars(jsonInString);


              BufferedReader br = null;
              if (200 <= conn.getResponseCode() && conn.getResponseCode() <= 299) {
                    br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
              }else{
                    br = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
              }
              String outputData = org.apache.commons.io.IOUtils.toString(br);

            }


        }catch (MalformedURLException e) {

            e.printStackTrace();
        }

        catch (IOException e1) {

            e1.printStackTrace();
        }

Пример кода приложения-получателя:

@RequestMapping(value = <receiver endpoint>, method = RequestMethod.POST, produces = "application/json", consumes = "application/json")
    public String testForDataTransferFromMVC(
            @RequestBody InputUserObject inputJSONObj) {


        LOGGER.debug("inputJSONObj -"+inputJSONObj); // here i can receive the object and it is in linkedhasmap type

        UsersInformation usersInformation = inputJSONHashmap.get("usersInformation"); // this throws type cast exception that it cannot convert from linkedhashmap to UsersInformation
        Map<String, Object> usersInformation = (Map<String, Object>) inputJSONHashmap.get("usersInformation"); // This line worked perfectly
...