猿问

REST(PHP,CURL)PUT / POST XML问题:400错误的请求,“无效的URL”响应

这里有很多要解压的东西。首先,我已经编辑了标题,因为我意识到虽然最终我的REST请求将被实现为PHP代码,但现在我将其剥离给Postman以测试REST,所以我将其剥离为低而低基本的。我可以正式地说问题出在我的要求上。


基本上,我正在发出POST请求,并使用“新的” OAuth身份验证对Walmart API的PUT请求进行测试。听起来很棒。GET在Postman和我的实际PHP代码中可以很好地工作。POST和PUT立即返回完全相同的错误,无论我做什么以及如何做:400错误的请求,无效的URL。在我进行PUT测试的情况下,我之所以这样做是因为它是一种更简单,更快速的文本,并且要尝试梳理的XML少得多,这是HTML标头中的确切响应:


<HTML>

    <HEAD>

        <TITLE>Invalid URL</TITLE>

    </HEAD>

    <BODY>

        <H1>Invalid URL</H1>

The requested URL "http&#58;&#47;&#47;&#37;5bNo&#37;20Host&#37;5d&#47;v3&#47;inventory&#63;", is invalid.

        <p>

Reference&#32;&#35;9&#46;c9384317&#46;1556319123&#46;8c89b8dc


        </BODY>

    </HTML>

我已经通过服务器通过PHP进行了测试,然后移到Postman尝试查找我遇到的确切问题,而GET请求的工作效果很好。我每15分钟左右生成一个新令牌。我已经做了...很多小的更改,但是Feed示例和请求的工作方式,就我所知,我所做的一切都是正确的。老实说,我认为我现在正在失去大理石弹。


让我最沮丧的是GET可以正常工作。我的令牌正在工作。我的OAuth运行正常。GET用于Walmart API的许多标头在PUT / POST / GET之间完全相同。此处的区别仅在于链接具有查询参数,并且XML被推送到主体中。编辑:我的意思是我的标头在GET和POST之间不更改;我所提供的唯一发生变化的是,正文中正在发送XML,并且需要查询参数。这是在成功的GET和失败的400错误请求PUT / POST之间切换的唯一内容。这使我相信我处理查询参数或XML的方式有问题,但是考虑到以下示例中,我已经复制/粘贴了XML ...我不确定。我知道这是我们目录中的现有商品。


我注意到,我不太了解Postman是否存在问题,因为沃尔玛的API要求content-type是multipart / form-data。我注意到它在说明这一点时使用了“示例”一词,但是,如果它接受其他内容,它通常会说“此或此”。但是,如果我将Postman中的content-type切换为multipart / form-data,则Body会自动变为raw:text而不是raw:XML(application / xml)或text / xml。如果我尝试将raw交换为那些类型,它将自动将我的内容类型翻转为application / xml,所以有点...麻烦。


我没有通过代理。我已关闭“全局代理配置”和“使用系统代理”。请求超时设置为0。没有客户端证书。我的意思是,GET有效,并且我的令牌是通过外部PHP代码成功生成的(不在Postman中,无法正常工作,请说一下)。


标题


PUT URL: https://marketplace.walmartapis.com/v3/inventory?sku=0xyz0


请发送帮助,我想我一直在盯着这个东西,所以我将把这个物理世界抛在脑后。沃尔玛最近才将他们的身份验证更新为OAuth,他们模糊地说他们的旧身份验证将被弃用并逐步淘汰,因此我显然想尝试使其正常工作。我试图尽可能复制所有内容。从示例中逐字逐句地复制粘贴了XML,并插入了我自己的产品。


另外,每次运行此功能时,那里的参考号始终会更改,因此我实际上无法查找该参考号。我只提供了Postman方面的信息,因为坦率地说,如果我能使它正常工作,我的PHP将会很好,我已经剔除了成功的GET请求中的一些小问题。


如果是分号问题,我会尖叫。


一只甜甜圈
浏览 133回答 1
1回答
随时随地看视频慕课网APP
我要回答