ABAP HTTP中传输中文问题 完美解决办法
方式一:将参数放入head
"HTTP
str_in = '张三'.
"在abap中调用url时,先要对url中的汉字转码ASCII
CALL METHOD cl_http_utility=>escape_url
EXPORTING
unescaped = str_in
RECEIVING
escaped = str_out.
CONCATENATE '/getUserName?name=' str_out INTO LV_PARAM.
call method cl_http_client=>create
exporting
host = 'wthrcdn.etouch.cn'
service = '80'
scheme = '1' "http
proxy_host = wf_proxy
proxy_service = wf_port
importing
client = http_client.
HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_ENABLED .
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~request_method'
VALUE = 'GET'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~server_protocol'
VALUE = 'HTTP/1.1'.
"host后的url
call method http_client->request->set_header_field
exporting
name = '~request_uri'
value = LV_PARAM.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'Content-Type'
VALUE = 'application/json'.
CALL METHOD HTTP_CLIENT->SEND
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2.
CALL METHOD HTTP_CLIENT->RECEIVE
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3.
* 获取返回的数据
RETURN_STR = HTTP_CLIENT->RESPONSE->GET_CDATA( ).
if RETURN_STR is INITIAL.
write: /'用cl_http_client=>create方法:' ,/ 'faild'.
else.
write: /'用cl_http_client=>create方法:' ,/ RETURN_STR.
endif.
CALL METHOD HTTP_CLIENT->CLOSE.
方式二:将参数放入url
CONCATENATE 'http://wthrcdn.etouch.cn/weather_mini'
'?'
'city=' str_out INTO LV_URL.
"URL填全部,带参数
CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
EXPORTING
URL = LV_URL
IMPORTING
CLIENT = HTTP_CLIENT.
HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_ENABLED .
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~request_method'
VALUE = 'GET'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~server_protocol'
VALUE = 'HTTP/1.1'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'Content-Type'
VALUE = 'application/json'. " text/html 看情况填
* "set body
* CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
* EXPORTING
* DATA = LV_PARAM
* OFFSET = 0
* LENGTH = LV_LEN.
CALL METHOD HTTP_CLIENT->SEND
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2.
CALL METHOD HTTP_CLIENT->RECEIVE
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3.
* 获取返回的数据
RETURN_STR = HTTP_CLIENT->RESPONSE->GET_CDATA( ).
if RETURN_STR is INITIAL.
write: /'用CL_HTTP_CLIENT=>CREATE_BY_URL方法:' ,/ 'faild'.
else.
write: /'用CL_HTTP_CLIENT=>CREATE_BY_URL方法:' ,/ RETURN_STR.
endif.
CALL METHOD HTTP_CLIENT->CLOSE.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架