点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,这是一个非常奇怪的问题。 我正在通过fm cl_http_client (REST)与第三个系统建立连接。URL需要3个参数: useID,username,email ,并且我会在借口成功后发送电子邮件
但是现在,这是一个非常非常奇怪的问题!!!!一些用户名可以成功发送电子邮件,但其他用户名将返回" 404'请求的资源不可用'" strong>像这样,(仅用户名没有什么不同,用户名或其他参数没有限制!!!! )
那么,有人知道是什么原因吗?感谢前进!
成功:
错误:
代码:
SPAN { 字体家族:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 { 字体样式:斜体; 颜色:#808080; } .L0S32 { 颜色:#3399FF; } .L0S33 { 颜色:#4DA619; } .L0S52 { 颜色:#0000FF; } .L0S55 { 颜色:#800080; } .L0S70 { 颜色:#808080; } 表格GET_DATA_FROM_URL使用P_L_URL P_I_PERNR 更改P_O_TYPE P_O_MESSAGE 。 数据:http_client TYPE REF IF_HTTP_CLIENT, gv_cdata TYPE字符串。 数据:loc_conv类型参考cl_abap_conv_in_ce, l_xstr TYPE xstring, l_str TYPE字符串, l_result TYPE字符串。 "返回数据 DATA:L_CODE TYPE C,"返回码 L_MESSAGE TYPE STRING, L_DATA TYPE STRING, L_SCORE TYPE STRING, L_PASS TYPE STRING, L_STRING_TEMP TYPE STRING, L_STRING_TEMP1 TYPE STRING 。 数据:L_LENGTH I型。 DATA:L_LOOP_INDEX TYPE I,"循环Deinx l_INDEX_TEMP TYPEI。"索引和 数据:L_TABIX类型SY-TABIX。 DATA:L_LINE_MESSAGE TYPE I,"味精的索引 L_LINE_CODE TYPE I," CODE的索引 L_LINE_PASS TYPE STRING," PASS的索引 L_LINE_SCORE TYPEI。" SCORE的索引 呼叫方法cl_http_client => create_by_url 出口 网址= P_L_URL 输入 客户端= http_client 例外情况 arguments_not_found = 1 plugin_not_active = 2 internal_error = 3 其他= 4。 **将请求方法设置为GET或POST http_client-> request-> set_method(if_http_request => co_request_method_post)。 *呼叫方法http_client-> request-> set_header_field *出口 *名称="内容" *值="测试"。 *呼叫方法http_client-> request-> set_header_field *出口 *名称="目标" *值='18961701938'。 * *呼叫方法http_client-> request-> set_header_field *出口 *名称="内容类型" ** value ='application/json'。 " * value ='text/html; charset = utf-8'。 " utf-8 呼叫方法http_client-> SEND 例外情况 http_communication_failure = 1 http_invalid_state = 2。 呼叫方法http_client-> receive 例外情况 http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3。 清除l_result。 l_xstr = http_client-> response-> get_data()。 如果sy-subrc = 0。 http_client-> close()。 万一。 呼叫方法cl_abap_conv_in_ce =>建立 出口 输入= l_xstr 编码='UTF-8' 替换='?' ignore_cerr = abap_true 接收 转换= loc_conv。 尝试。 调用方法loc_conv-> read 输入 数据= l_str。 捕获cx_sy_conversion_codepage。 捕获cx_sy_codepage_converter_init。 捕获cx_parameter_invalid_type。 捕获cx_parameter_invalid_range。 ENDTRY。 用空格替换l_str中正则表达式'\ {*'的所有出现。 用''替换l_str中所有正则表达式'\} *'的出现。 用''替换l_str中正则表达式'\ [*'的所有出现。 用''替换l_str中所有正则表达式'\] *'的出现。 用l替换l_str中所有正则表达式'\" *'的出现。 将l_str AT','拆分到表数据(LT_RESULT_TEMP)中。 描述表LT_RESULT_TEMP LINES DATA(L_LINE)。 L_LINE_CODE = 1。 L_LINE_MESSAGE = 2。 "码 读取表LT_RESULT_TEMP到数据(LS_RESULT_TEMP)索引L_LINE_CODE。 如果SY-SUBRC EQ 0。 分割LS_RESULT_TEMP AT':'INTO L_STRING_TEMP P_O_TYPE。 万一。 "信息 读取表LT_RESULT_TEMP INTO LS_RESULT_TEMP INDEX L_LINE_MESSAGE。 如果SY-SUBRC EQ 0。 将LS_RESULT_TEMP AT分割为':'INTO L_STRING_TEMP P_O_MESSAGE。 万一。 ENDFORM。
(14.8 kB)
我发现了为什么!原因是因为编码!我的系统是HANA 1511 unicode。当我使用cl_http_client => create_by_url连接第三系统时,用户名是中文,它在unicode和非unicode中有所不同 对于 chinese.so 我收到错误消息!
请重新格式化您的 代码,其中包含CSS代码+每行之间有一个空白行。 我发现您的网络浏览器存在一个常见问题,因此请先将代码粘贴到记事本中,然后再次将其复制并粘贴到网络浏览器中(如果您的浏览器具有此选项,则直接使用上下文菜单"粘贴未格式化") 。 谢谢。
PS:CL_ABAP_CODEPAGE比CL_ABAP_CONV_IN_CE更易于使用。
如果它不能回答问题, 请不要使用答案来发布此类信息。 就像Sandra一样,使用注释部分。
我确定您会在其他非SAP网站上找到一些有关Unicode如何影响HTTP连接中用户/密码传递的信息。
一周热门 更多>