我已使用Docker文件将用Flask编写的Web服务部署到Microsoft Azure App Services。无需身份验证,可以匿名访问该应用。
现在,我想使用Web服务的URL从本地计算机的请求中发送一个json对象,并作为响应接收一个json对象。
Web服务中定义了2条不同的路由,可以在请求中解决。
@app.route('/json-example-Json', methods=['POST']) #GET-Requests get blocked
def json_example_json(): ...
和
@app.route('/json-example-blob', methods=['POST']) #GET-Requests get blocked
def json_example_blob(): ...
我要使用第一个路由,并且从本地PC上的脚本发送的请求如下所示:
headers = { "Content-Type":"application/json"}
body = str.encode(json.dumps(payload))
request = urllib.request.Request("https://myfirstwebservice.azurewebsites.net/json-example-Json", body, headers)
try:
response = urllib.request.urlopen(request)
results = json.loads(response)
print(results)
except:
print("HTTP Error")
执行脚本时,出现以下错误:
File "C:/Users/J/azure_service_broker.py", line 263, in <module>
result = response.read()
NameError: name 'response' is not defined
我也尝试在末尾添加“ /”:
request = urllib.request.Request("https://myfirstwebservice.azurewebsites.net/json-example-Json/", body, headers)
,但它或多或少会导致相同的结果。 Web服务似乎甚至没有收到请求,因为我的Azure门户中的指标未显示任何活动。
我还尝试了没有路由说明的URL:
request = urllib.request.Request("https://myfirstwebservice.azurewebsites.net", body, headers)
在这种情况下,Web服务接收到请求,因为我可以监视传入的数据,但是由于它无法将其与app.routes之一匹配,因此不会发送响应。
如何使用请求中指定的路由之一访问URL?