Я работаю над параметризованным отображением 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. Скажите, пожалуйста, какие изменения необходимо внести.
Привет, Джон, спасибо за ответ. В предыдущей итерации кода ... Я указал формат UTF-8 внутри getBytes (), но он все равно получил вывод, аналогичный текущему.
Да, будет - потому что проблема заключается в вызове toString для классов, которые его не переопределяют. Но это всего лишь выходные данные трассировки - нет очевидных признаков того, что полезная нагрузка здесь на самом деле неверна.




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