我想使用Python库请求连接到我的asp.net Core API点。
尝试将Json从Python发送到asp.net core后,我得到以下消息:
ConnectionError: HTTPConnectionPool(host='localhost', port=5000): Max retries exceeded with url:/api/Search(由NewConnectionError('
btw:我只尝试了一次建立连接;-)
import requests
import json
class SearchApi:
@staticmethod
def findFile(request):
headers = {'Content-type': 'application/json', 'Accept': 'application/json'}
url = "http://localhost:5000/api/Search"
response = requests.post(url, data=json.dumps(request.__dict__), headers=headers)
return response.json()
和请求类:
class Request:
def __init__(self, driveId, itemId, searchName):
self.driveId = driveId
self.itemId = itemId
self.searchName = searchName
和asp.net Core后端方法:
[ApiController]
[Route("api/[controller]")]
public class SearchController : ControllerBase
[HttpPost]
public async Task<IActionResult> SearchFile([FromBody] SearchInfos searchInfos)
{
//......
Console.WriteLine("Ping ! ! ");
return Ok();
}
对于后端,不幸的是,没有来自Python的请求到达,但是Postman或Swagger测试是成功的。
我在代码中犯了什么错误?
更新
问题的原因是使用了ngrok代理。使用以下命令解决此问题:
ngrok http -host-header=localhost:5000
Try setkeep_alive = False
.
s = requests.session()
s.keep_alive = False
尝试在标题中添加Connection=close
。
headers = {
'Connection': 'close',
'Content-type': 'application/json',
'Accept': 'application/json'
}