失败! 405此URL不支持HTTP PUT方法[PactBroker]

时间:2018-10-16 18:08:13

标签: java pact

使用本地主机发送发布时,它可以正常工作。与固定IP一起使用时,返回错误405。

<< strong>失败! 405此URL不支持HTTP PUT方法>

单独发布时,验证在两种方式下均可完美运行。

请求由gradle中的任务生成:

pact {
  publish {
    pactBrokerUrl = 'http://localhost:80'
    pactBrokerUsername = 'admin'
    pactBrokerPassword = 'admin'
    tags = ['DEV']
} }

将设置添加到ngnix.conf中,但将不起作用。

请帮助!!!

2 个答案:

答案 0 :(得分:0)

补丁解决方案如何使用curl:

curl -v -XPUT -H 'Content-Type: application/json' -u 'admin:admin' -d@c:/pacts/ms-consumer-ms-provider.json http://<IP>:80/pacts/provider/ms-provider/consumer/ms-consumer/version/1.0.0/

正在工作,这样我可以在管道中执行它。

答案 1 :(得分:0)

也许您的问题不在于代码,而在于代码的部署。

在开发环境中部署代码时,通常让Web服务器/ Web服务在localhost(或127.0.0.1)上侦听。通常,这是分布式软件的默认设置,因为它仅将服务公开给同一台计算机,从而将(其他人调用您的服务的)风险降到最低。

这意味着在许多情况下,您需要重新配置Web服务器或Web服务以侦听127.0.0.1以外的入站地址。例如,在Apache HTTPD中,您将更改/etc/httpd/httpd.conf文件以更改该行

Listen 127.0.0.1:80

Listen 80

其他系统具有其他配置值,可能需要进行类似的更新,我将查找您特定环境的详细信息并验证您环境的配置设置。

也可能是请求到达计算机,服务正在监听它,但是软件防火墙在请求到达计算机之后但在传递给处理服务之前,正在丢弃该请求。再次,我将验证是否启用了软件防火墙,如果启用了防火墙,请查看管理选项以对其进行重新配置,以使您的请求可以到达处理它们的服务。

在查看这些管理选项时,我还将查看日志记录配置选项,因为这将帮助您更深入地了解该过程。

作为后一种手段,您可能希望在服务器上安装(假设它是Linux系统)WireShark,以验证请求是否已到达服务器。有时,服务之外的配置问题(例如,中间计算机中的软件或硬件防火墙或路由策略错误)可能会使您的请求发送到网络的错误部分,并且您的服务(及其所在的服务器)甚至都看不到请求。

虽然现在不容易确定具体问题是什么,但是这些建议应该使您进一步朝着运行的系统发展,并且可能足以解决许多最常见的问题。

祝你好运!