Неверный формат InputRFC после getBytes

Я работаю над параметризованным отображением Java. При выполнении поиска RFC код возвращает полезные данные в неправильном формате. Пожалуйста, найдите ниже код и трассировку стека.

 chn = LookupService.getChannel(getBSystem(),getCChannel());
 rfc = LookupService.getRfcAccessor(chn);
 getTrace().addInfo("After LookUp");
 String req = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+"<ns0:OTC_NFE_MAIL_OUTPUT"+"xmlns:ns0=\"urn:sap-com:document:sap:rfc:functions\">"+"<I_ACCESS_KEY>"
    + idNFe + "<I_ACCESS_KEY></ns0:OTC_NFE_MAIL_OUTPUT>";
 getTrace().addInfo("Req value:"+req);
 InputStream inputRFC = new ByteArrayInputStream(req.getBytes());
 getTrace().addInfo("InputRFC"+inputRFC);
 XmlPayload rfcPayload = LookupService.getXmlPayload(inputRFC);
 getTrace().addInfo("rfcPayload"+rfcPayload);
 XmlPayload result = rfc.call(rfcPayload);
 getTrace().addInfo("Payload result"+result);
 InputStream resp = result.getContent();

Трассировки стека:

  • После LookUp

  • Требуемое значение: 35181204136367001755550010001002441406742916

  • InputRFCjava.io.ByteArrayInputStream@7ec9dfbb

  • rfcPayloadcom.sap.aii.mapping.lookup.XmlPayload@447072fe

Нам нужно, чтобы значение 35181204136367001755550010001002441406742916 было заполнено при выполнении вызова RFC. Скажите, пожалуйста, какие изменения необходимо внести.

Вы звоните toString() на ByteArrayInputStream, а затем на XmlPayload. По сути, это не то, что вы ожидаете. Это не означает, что данные неверны - хотя вызывать String.getBytes() без указания Charset - это почти всегда - плохая идея. В этом случае вы должны указать UTF-8.

Jon Skeet 06.12.2018 10:41

Привет, Джон, спасибо за ответ. В предыдущей итерации кода ... Я указал формат UTF-8 внутри getBytes (), но он все равно получил вывод, аналогичный текущему.

Kaushik 06.12.2018 10:45

Да, будет - потому что проблема заключается в вызове toString для классов, которые его не переопределяют. Но это всего лишь выходные данные трассировки - нет очевидных признаков того, что полезная нагрузка здесь на самом деле неверна.

Jon Skeet 06.12.2018 12:29
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
34
0

Другие вопросы по теме