点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) 您好,我试图在abap中模拟此...
点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好,我试图在abap中模拟此python代码,但没有运气:
def _convert_result(结果):#语法:无封面 """将SOAP结果条目转换成字典。""" 翻译= { 'NOMBRE':'名称', 'COMPROBANTE':'证明', 'ES_VALIDO':'is_valid', 'MENSAJE_VALIDACION':'validation_message', 'RNC':'rnc', 'NCF':'ncf', u'RNC/Cédula':'rnc', u'Nombre/RazónSocial':"名称", 'Estado':'状态', 'Tipo de comprobante':'type', } 返回dict( (translation.get(键,键),值) 对于键,值在result.items()中 def check_dgii(rnc,ncf,timeout = 30):#编译指示:无遮盖 """使用DGII在线Web服务验证RNC,NCF组合。 这将使用DirecciónGeneral de运行的验证服务 Impuestos Internos,多米尼加共和国税务部门进行检查 RNC和NCF的组合是否有效。 超时到 秒。 返回具有以下结构的字典: { '名称':'注册名称', 'status':'VIGENTE', 'type':'FACTURAS DE CREDITO FISCAL', 'rnc':'123456789', 'ncf':'A020010210100000005', 'validation_message':'El NCF digitado esválido。, } 如果数字无效或未知,将返回None。""" 汇入要求 尝试: 从bs4导入BeautifulSoup 除了ImportError: 从BeautifulSoup进口BeautifulSoup url ='https://www.dgii.gov.do/app/WebApps/ConsultasWeb/consultas/ncf.aspx' 标头= { '用户代理':'Mozilla/5.0(python-stdnum)', } 数据= { " __EVENTVALIDATION":"/img/wEWBAKh8pDuCgK + 9LSUBQLfnOXIDAKErv7SBhjZB34//pbvvJzrbkFCGGPRElcd", " __VIEWSTATE":"/img/wEPDwUJNTM1NDc0MDQ5ZGRCFUYoDcVRgzEntcKfSuvPnC2VhA ==", " ctl00 $ cphMain $ btnConsultar":"领事", " ctl00 $ cphMain $ txtNCF":ncf, " ctl00 $ cphMain $ txtRNC":rnc, } 打印(数据) 结果= BeautifulSoup( requests.post(URL,headers = headers,data = data,timeout = timeout).text) 结果= result.find(id ='ctl00_cphMain_pResultado') 如果结果: 数据= { 'validation_message':result.find(id ='ctl00_cphMain_lblInformacion')。get_text()。strip(), } data.update(zip( [在结果中x的x.get_text()。strip()。rstrip(':')。find_all('strong')], [x的x.get_text()。strip()在results.find_all('span')])中) 返回_convert_result(数据) 打印(check_dgii('102619883','B0100002500')
我尝试用不同的方式将正确的数据传递给请求,但没有外观,总是出现通信错误,但不知道到底是什么错误,这是我的abap代码(在此先感谢):
*&------------------------------------------------ --------------------- * *&报告Z_ED_PROTO_HTTP_RESQ_PARSE *& *&------------------------------------------------ --------------------- * *& *& *&------------------------------------------------ --------------------- * 报告z_ed_proto_http_resq_parse。 DATA:lv_value TYPE字符串。 数据:lo_http_client类型参考if_http_client。 DATA:lv_url TYPE字符串。 DATA:返回TYPE字符串。 数据:lv_err_string TYPE字符串, lv_ret_code类型sy-subrc。 DATA lv_payload TYPE字符串。 数据lv_payload_x TYPE xstring。 数据:rlength TYPE i。 *构建网址 lv_url ='https://www.dgii.gov.do/app/WebApps/ConsultasWeb/consultas/ncf.aspx'。 *创建客户 *调用方法cl_http_client => create_by_url *出口 *网址= lv_url *导入 *客户端= lo_http_client。 调用方法cl_http_client => create 出口 主机= lv_url *服务= * proxy_host = * proxy_service = 方案= 2 * ssl_id = * sap_username = * sap_client = 输入 客户端= lo_http_client 例外情况 arguments_not_found = 1 plugin_not_active = 2 internal_error = 3 其他= 4。 如果sy-subrc <> 0。 *消息ID sy-msgid类型sy-msgty编号sy-msgno *与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。 万一。 *设定方法 lo_http_client-> request-> set_method('POST')。 lo_http_client-> request-> set_header_field(name ='〜request_method' 值='POST')。 * 内容类型 lo_http_client-> request-> if_http_entity〜set_content_type(content_type ='text/html')。 *设置相关 * lo_http_CLIENT-> REQUEST-> IF_HTTP_ENTITY〜set_formfield_encoding(CL_HTTP_REQUEST => IF_HTTP_ENTITY〜CO_ENCODING_RAW)。 *设置标题数据 lo_http_client-> request-> set_header_field( 出口 名称="用户代理" 值='Mozilla/5.0(python-stdnum)' )。 *设置有效载荷 类型:开始于ty_data, __EVENTVALIDATION类型的字符串, __VIEWSTATE TYPE字符串, ctl00 $ cphMain $ btnConsultar TYPE字符串, ctl00 $ cphMain $ txtNCF TYPE字符串, ctl00 $ cphMain $ txtRNC TYPE字符串, 结束于ty_data。 数据:ls_data类型ty_data, lt_data ty_data的类型标准表。 CONCATENATE'{" __EVENTVALIDATION":"/img/wEWBAKh8pDuCgK + 9LSUBQLfnOXIDAKErv7SBhjZB34//pbvvJzrbkFCGGPRElcd",' '" __VIEWSTATE":"/img/wEPDwUJNTM1NDc0MDQ5ZGRCFUYoDcVRgzEntcKfSuvPnC2VhA ==",' '" ctl00 $ cphMain $ btnConsultar":"领事",' '" ctl00 $ cphMain $ txtNCF":" B0100012171",' '" ctl00 $ cphMain $ txtRNC":" 101064714"}'INTO lv_payload。 ls_data -__ eventvalidation ='/wEWBAKh8pDuCgK + 9LSUBQLfnOXIDAKErv7SBhjZB34//pbvvJzrbkFCGGPRElcd'。 ls_data -__ viewstate ='/wEPDwUJNTM1NDc0MDQ5ZGRCFUYoDcVRgzEntcKfSuvPnC2VhA =='。 ls_data-ctl00 $ cphMain $ btnConsultar ='领事'。 ls_data-ctl00 $ cphMain $ txtNCF ='B0100002500'。 ls_data-ctl00 $ cphMain $ txtRNC ='102619883'。 将ls_data附加到lt_data。 清除ls_data。 数据lcl_writer类型参考cl_sxml_string_writer。 DATA l_string_json类型字符串。 lcl_writer = cl_sxml_string_writer => create(if_sxml => co_xt_json)。 * lcl_writer = cl_sxml_string_writer => create(if_sxml => co_xt_json)。 呼叫转换ID源文本= lt_data结果XML lcl_writer。 l_string_json = cl_abap_codepage => convert_from(lcl_writer-> get_output())。 cl_demo_output => write_json(l_string_json)。 用''''替换lv_payload中'"'的所有事件。 通话功能'SCMS_STRING_TO_XSTRING' 出口 文字= lv_payload * MIMETYPE ='' *编码= 输入 缓冲区= lv_payload_x 例外情况 失败= 1 其他= 2。 如果sy-subrc <> 0。 *在这里实施适当的错误处理 万一。 BREAK-POINT。 * rlength = strlen(l_xstring_json) lo_http_client-> request-> set_cdata( 出口 数据= lv_payload *偏移量= 0 *长度= rlength ).. *发送 * BREAK-点。 * lo_http_client-> request-> set_form_field(name ='__EVENTVALIDATION'value ='/wEWBAKh8pDuCgK + 9LSUBQLfnOXIDAKErv7SBhjZB34//pbvvJzrbkFCGGPRElcd')。 * lo_http_client-> request-> set_form_field(name ='__VIEWSTATE'value ='/wEPDwUJNTM1NDc0MDQ5ZGRCFUYoDcVRgzEntcKfSuvPnC2VhA ==')。 * lo_http_client-> request-> set_form_field(name ='ctl00 $ cphMain $ btnConsultar'value ='Consultar')。 * lo_http_client-> request-> set_form_field(name ='ctl00 $ cphMain $ txtNCF'value ='B0100002500')。 * lo_http_client-> request-> set_form_field(name ='ctl00 $ cphMain $ txtRNC'value ='102619883')。 lo_http_client->发送( *出口 *超时= CO_TIMEOUT_DEFAULT 例外情况 http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3 http_invalid_timeout = 4 其他= 5 )。 如果sy-subrc <> 0。 *消息ID sy-msgid类型sy-msgty编号sy-msgno *与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。 BREAK-POINT。 万一。 数据:lv_subrc类型sy-subrc。 *接收 lo_http_client-> receive( 例外情况 http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3 其他= 4 )。 如果sy-subrc <> 0。 lv_subrc = sy-subrc。 BREAK-POINT。 *消息ID sy-msgid类型sy-msgty编号sy-msgno *与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。 lo_http_client-> get_last_error(导入代码= lv_subrc消息= lv_err_string)。 lo_http_client->响应-> get_status( 输入 代码= lv_ret_code 原因= lv_err_string )。 消息lv_err_string类型'I'。 其他。 BREAK-POINT。 万一。 *现在我们有了response,parse,display * 你喜欢什么 return = lo_http_client-> response-> get_cdata()。
只是个主意。 您试图致电 https://www.dgii.gov.do
您是否已将 www.dgii.gov.do 的证书安装到SAP系统中并使其受信任 ?
最好的问候
康斯坦丁
埃德加·阿尔蒙特 ABAP Web应用程序服务器,您必须信任证书->下载证书并通过事务STRUST安装它们。 当前使用直接URL时,应将其安装在"客户端匿名"节点中。 将来,您最好在事务SM59(远程连接)中配置URL,并通过此目标进行访问(CL_HTTP_CLIENT => CREATE_BY_DESTINATION)。
谢谢,这似乎是我的问题,strust tcode以红色显示了所有内容,并且没有ssl客户端是config,谢谢
没有任何设置吗? 请您的管理员设置SSL。 他可能会参考 510007-在Web应用服务器ABAP上设置SSL
# p#一周热门 更多>