在camel 2.16.1中我通过Camel的HTTPS POST
组件发送HTTP4
请求。网址如下所示: -
https4://debraj:debraj@example.com/oms-api/?Action=UpdateOrderInformation&ServiceName=OMS&Signature=25566099c0b6b6c5123bbfede4c91590512050668f957e2a43ef982a0dcf1c00&Timestamp=2016-04-14T12%3A44%3A17+0530&Version=1.0
身体看起来如下: -
{
"Request": {
"Orders": [
{
"id_sales_order": 397,
"address_billing": {
"first_name": "John",
"last_name": "Doe",
"phone": "1234567",
"phone2": "1234",
"address1": "Sesamestreet 123",
"city": "Berlin",
"postcode": "12345",
"country": "Germany"
}
}
]
}
}
它回来了我: -
{
"ErrorResponse": {
"Head": {
"RequestAction": "UpdateOrderInformation",
"ErrorType": "Sender",
"ErrorCode": "7",
"ErrorMessage": "E007: Login failed. Signature mismatch"
},
"Body": ""
}
}
如果通过在Exchange.HTTP_QUERY
下发送查询参数来做出相同的请求,那么它会给我正确的回复: -
headers.put(Exchange.HTTP_QUERY, "Action=UpdateOrderInformation&ServiceName=OMS&Signature=25566099c0b6b6c5123bbfede4c91590512050668f957e2a43ef982a0dcf1c00&Timestamp=2016-04-14T12%3A44%3A17+0530&Version=1.0")
{
"SuccessResponse": {
"Head": {
"RequestId": "",
"RequestAction": "UpdateOrderInformation",
"ResponseType": "",
"Timestamp": "2015-07-02T12:26:03+0200"
},
"Body": []
}
有人可以告诉我: -
Exchange.HTTP_QUERY
下发送查询参数?我问这个是因为使用主URL发送查询参数并不总是失败。如果对我的问题不清楚,请提出要求,我会尝试解释。
答案 0 :(得分:0)
这是因为您的查询参数每次都在变化,即您的签名发生变化。您的签名有时可能只是在其中带有+符号或空格(或类似的字符),然后http4将符号转换为%20(或其他内容,具体取决于字符)。您可以检查签名失败的时间,并确定是否是这种情况。我不记得过去我是如何解决这个问题的,但似乎你已经有了解决方案。希望这澄清。