SOAP接收器-HTTP/1.1 500内部服务器错误

2020-09-11 02:03发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我们正在使用参数...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我们正在使用参数化的Java映射并执行SOAP(接收器)通道查找(以发布请求并返回响应)。

我们在参数选项卡中传递业务系统和通信渠道名称,并执行操作映射。 通道立即进入错误状态。

错误详细信息:

频道日志:

SOAP:响应消息包含错误XIAdapter/HTTP/ADAPTER。HTTP_EXCEPTION-HTTP 500内部服务器错误

我们已经收集了带有示例50-> HTTP跟踪(完全转储)的XPI_Trace,并且可以看到以下错误和SOAP错误响应。

08:31:49:086整个请求消息已成功发送。 接收中...
08:31:49:092服务器响应:HTTP/1.1 500内部服务器错误
08:31:49:092响应 收到。 正在读取响应消息...
...
08:31:49:097阅读正文<?xml version =" 1.0" encoding =" UTF -8"?>

http://www.w3.org/2001/XMLSchema " xmlns:SOAP-ENV =" http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance ">

SOAP-ENV:Client

com.sap.SOA.wsr.030106-使用肥皂键[ http://schemas.xmlsoap.org/soap/envelope/],[信封],[]。 InterfaceMapping对象类:com.sap.engine.services.webservices.espbase.mappings.InterfaceMapping映射:{BindingType = Soap,InterfaceMappingID = technidata.de/xem〜ewis〜mdata〜eappl_MDMImporter_Config1Port}。

com.sap.SOA.wsr.030106-使用肥皂键[http://schemas.xmlsoap.org/soap/envelope/],[信封],[]。 InterfaceMapping对象类:com.sap.engine.services.webservices.espbase.mappings.InterfaceMapping映射:{BindingType = Soap,InterfaceMappingID = technidata.de/xem〜ewis〜mdata〜eappl_MDMImporter_Config1Port}。

已执行的操作

1)我们引用了SAP注释" 1737850 ",并创建了用于SOAP通道绑定的虚拟ICO。

2)将发布到Web服务的请求有效负载与生产请求有效负载进行了比较。

3)从SAP PI成功进行Telnet ping操作。

4)当我们从WSnavigator测试URL时,出现错误HTTP:405方法。

5)使用REST客户端将消息发布到目标URL时,HTTP 500内部服务器错误。 也可以在REST客户端中获得上述SOAP错误响应。

6)在该通道中,尝试使用SOAP信封/也不要使用SOAP信封。

问题仍然存在,请帮助我解决问题。

致谢

巴尔加瓦奎师那

7条回答
野沐沐
2020-09-11 02:38

您好Vinay,

感谢您的回复。

我们正在将接口从SAP PI 7.31迁移到SAP PO 7.5。

在旧系统SAP PI 7.31中,我们拥有类型为" G"的RFC目标,其中他们维护了"目标主机,服务编号和路径前缀",并在HTTP接收器通信通道中维护了此目标。 SAP PI 7.31系统。

在新系统中,我们使用HTTP协议创建了SOAP接收器通信通道并维护了目标URL。

我们根据HTTP目标形成了目标URL。

https://"目标主机":"端口"/"路径前缀"(引用HTTP目标并形成URL)

包com.mdm.po.map;
 导入java.io. *;
 导入com.sap.aii.mapping.api。*;
 导入com.sap.aii.mapping.lookup.Channel;
 导入com.sap.aii.mapping.lookup.LookupService;
 导入com.sap.aii.mapping.lookup.Payload;
 导入com.sap.aii.mapping.lookup.SystemAccessor;
 导入com.sap.aii.mapping.lookup.XmlPayload;


 公共类GMDM_MaterialData_To_XEM_Mail扩展了AbstractTransformation {
 
   DynamicConfiguration conf; //用于动态配置,该动态配置用于创建和写入文件。
   InputParameters参数; //用于输入参数
  
   字符串businessSystem ="";
   字符串soapChannel ="";
   字符串messageID ="";
  
   公共无效变换(TransformationInput arg0,TransformationOutput arg1)
                         引发StreamTransformationException {


     conf = arg0.getDynamicConfiguration(); //提供动态配置
     param = arg0.getInputParameters(); //提供输入参数
  
     尝试
     {
     businessSystem = arg0.getInputParameters()。getString(" BUSINESS_SYS");
     soapChannel = arg0.getInputParameters()。getString(" SOAP_CHANNEL");
     }
     抓住(下午例外)
     {
  
   getTrace()。addInfo("参数维护不正确");
  
     }
   
 InputHeader messageHeader = arg0.getInputHeader();
     messageID = messageHeader.getMessageId();
    
     getTrace()。addInfo(" BUSINESS_SYSTEM参数:" + businessSystem);
     getTrace()。addInfo(" SOAP_CHANNEL参数:" + soapChannel);
  
    
     this.execute(arg0.getInputPayload()。getInputStream(),
                  arg1.getOutputPayload()。getOutputStream());


   }


  //方法" execute"由" transform"和" main"调用
   公共无效执行(InputStream输入,OutputStream输出)
                       引发StreamTransformationException {


 字符串行="";
 字符串lineData ="";
 字符串respData ="";
 字符串reqData ="";
 字符串finalData ="";

 尝试
 {
//现在读取实际的运行时业务文件并处理这些特殊字符。
 BufferedReader bin =新的BufferedReader(新的InputStreamReader(in));
 StringBuffer sb = new StringBuffer();

//逐行读取XML并追加到字符串缓冲区中。
 while((line = bin.readLine())!= null)
 {
 sb.append(line);
 sb.append(" \ n");

 }

 字符串inData = sb.toString();

 int x = inData.indexOf(" ");
 int y = inData.indexOf(" ")+ 12;

 if((x> 0)&&(y> x))
 reqData = inData.substring(x,y);

 inData =" <?xml版本= \" 1.0 \"编码= \" ISO-8859-1 \"?>" +" \ n" +
 " " +
 " " + inData +"  ";

 inData = inData.replaceAll(" \\ <\\?xml(。+?)\\?\\>","");
 getTrace()。addInfo(" HTTP Request");
 getTrace()。addInfo(inData);
 尝试
 {
 频道频道= LookupService.getChannel(businessSystem,soapChannel);


 SystemAccessor访问器= LookupService.getSystemAccessor(channel);


 InputStream inputStream =新的ByteArrayInputStream(inData.getBytes());


 XmlPayload有效负载= LookupService.getXmlPayload(inputStream);


 Payload SOAPOutPayload = null;


//响应将是有效负载。 对此进行解析以获取响应字段。


 SOAPOutPayload = accessor.call(payload);


/*解析SOAPPayload以获取SOAP响应。


 转换率在字段名称ConversionRateResult下可用*/


 InputStream inp = SOAPOutPayload.getContent();

 BufferedReader bin2 = new BufferedReader(new InputStreamReader(inp));
 StringBuffer sb2 =新的StringBuffer();

//逐行读取XML并追加到字符串缓冲区中。
 而((lineData = bin.readLine())!= null)
 {
 sb2.append(lineData);
 sb2.append(" \ n");
 }

 respData = sb2.toString();

 int p = respData.indexOf(" ");
 int q = respData.indexOf(" ")+ 15;

 if((p> 0)&&(q> p))
 respData = inData.substring(p,q);


 finalData =" <?xml版本= \" 1.0 \"?>  " + reqData +
 "  " + respData +
 "  ";

 finalData = finalData.replaceAll(" ns0:","");
 finalData = finalData.replaceAll(" ns1:","");
 finalData = finalData.replaceAll(" ns2:","");
 finalData = finalData.replaceAll(" ns3:","");

 finalData = finalData.replaceAll(" rn0:","");
 finalData = finalData.replaceAll(" rn1:","");
 finalData = finalData.replaceAll(" rn2:","");
 finalData = finalData.replaceAll(" rn3:","");
 
 }
 catch(异常e)
 {
 finalData =" <?xml版本= \" 1.0 \"?>  " + reqData +
 "  " +
 "  ";

 finalData = finalData.replaceAll(" ns0:","");
 finalData = finalData.replaceAll(" ns1:","");
 finalData = finalData.replaceAll(" ns2:","");
 finalData = finalData.replaceAll(" ns3:","");

 finalData = finalData.replaceAll(" rn0:","");
 finalData = finalData.replaceAll(" rn1:","");
 finalData = finalData.replaceAll(" rn2:","");
 finalData = finalData.replaceAll(" rn3:","");
 finalData = finalData.replaceAll(" <​​MessageText>","  <![CDATA [");
 finalData = finalData.replaceAll(" <​​/MessageText>","]]> ");
 }


 out.write(finalData.getBytes(" UTF-8"));
 out.close();
 out.flush();
 }
 捕获(异常e)
 {
 e.printStackTrace();
                  
 }


   }
 


  //方法" main"使用文件进行输入和输出
   公共静态void main(String [] args){


     尝试{
 
       InputStream in = new FileInputStream(new File(" C:\\ Users \\ B20013 \\ Desktop \\ Test \\ In \\ material_Input.xml"));
       OutputStream out =新FileOutputStream(新File(" C:\\ Users \\ B20013 \\ Desktop \\ Test \\ Out \\ material_Output.xml"));
       GMDM_MaterialData_To_XEM_Mail myMapping =新的GMDM_MaterialData_To_XEM_Mail();
       myMapping.execute(in,out);
     } catch(Exception e){
       e.printStackTrace();
     }
   }
 }
 

一周热门 更多>