首页 > 解决方案 > 邮递员:使用 application/x-www-form-urlencoded 作为内容类型发送 XML 作为正文

问题描述

好的,第一件事:我不对这段代码负责。我正在处理路由器。这个路由器有一个网页界面,我要展示的代码在路由器的网页界面中。我的工作是构建一个应用程序来配置这个路由器。我需要我的应用程序在路由器中执行登录操作。

问题是:为这个路由器创建 Web 界面的开发人员,让路由器接受一个 post 请求,其中请求的主体是 xml,内容类型是application/x-www-form-urlencoded!!!! (哇哇哇???)

发送请求

生成此请求的源代码在页面中:

function PostXML_log(pUrl, value) {
    $.ajax({
        type: "POST",
        dataType: 'xml',
        url: pUrl,
        processData: false,
        data: value,
        async: true,
        beforeSend: function () { show_message("wait"); },
        success: function (data) {
            var code = $(data).find('CODE').text();
            if (code == "0" || code == "-1") {
                $.cookie.json = false;
                $.cookie("stork", $(data).find('MESSAGE').text(), { expires: 1 });
                if (code == "-1")
                    window.location = "mac_err.html";
                else
                    location.href = "../main_status.html";
            }
            else show_message("error", err_message)
        },
        error: function () { show_message("error", 'loading Error...'); },
        timeout: 20000
    });

}

function loginIn() {
    var username = 'admin';//$('#username').val();
    var password = ASCII2HEX($('#login_pwd').val());
    var xml = '<?xml version="1.0" encoding="utf-8"?><LOGIN><USER_NAME>' + username + '</USER_NAME><PASSWD>' + password + '</PASSWD></LOGIN>';
    PostXML_log("/cgi-bin/cgi.cgi?/app/route/login", xml);
};

问题是我找不到使用 Postman 复制这种行为的方法。我找不到同时发送正文和application/x-www-form-urlencoded用作内容类型的方法。

我尝试了 4 种不同的策略,但均未成功:

1 - 作为正文发送,使用内容类型 application/xml,导致未收到响应(作为纯文本发送或 text/xml 结果相同):

在此处输入图像描述

2 - 发送 xml 作为表单键,导致错误

在此处输入图像描述

3 - 发送 xml 作为表单值,导致错误

在此处输入图像描述

4 - 发送 xml 作为键和值,错误:(我尝试将 xml 的<xml>标签作为键和<login>标签作为值,以及将整个 xml 作为键和值,没有运气)

在此处输入图像描述

标签: javascriptjqueryajaxxmlpostman

解决方案


推荐阅读