昨晚向同事写的python接口post图像数据的时候,出现了这个提示,但一次链接是没有这种问题的(StutasCode提示为400),但第二次发送的时候,就提示:SocketException: 你的主机中的软件中止了一个已建立的连接。

开始以为是接口写的由问题,但是同事的python脚本却能够正常上传。后面测试发现,原来是与服务器接口的数据要求格式不同,经过修改代码后,能够正确发送。
##附上python的post的方式

    files = {'img': (CAPTCHA_NAME, open(img_path, 'rb'), 'image/png', {})}
    res = requests.post('http://0.0.0.0:1000/Test', files=files,timeout=3)

上面的代码只是一部分,看得出来,上面需要的files是一个KeyValuePair,key是string,value是元祖(参数名,流,类型);
因此检查代码发现我之前用的是文件流的方式,因此导致提示此错误。附上正确的C#代码

                          using (var client = new HttpClient(hch))
                                  var img = new MultipartFormDataContent();
                                  img.Add(new ByteArrayContent(buff), "img","captcha.png");
                                  var hrm = new HttpRequestMessage(HttpMethod.Post, url);
                                  hrm.Content = img;
                                  var response = client.SendAsync(hrm, HttpCompletionOption.ResponseContentRead).Result;
                                  Console.WriteLine($"{response.StatusCode} {(int)response.StatusCode}");
                                  Console.WriteLine(response.Content.ReadAsStringAsync().Result);
                                  if (response.StatusCode == HttpStatusCode.InternalServerError)
                                      err++;
                              catch (Exception e)
                                  Console.WriteLine(e);

这样格式就对应上来了。
主要的原因是HttpContent内容对不上导致服务器直接关闭了链接。
在此之前,我使用的是HttpContent是这样写的

img.Add(new ByteArrayContent(buff), "img");
//因此这个与接口所需参数不符

综上所述:提示这个错误时,应该先检查自己的传输的参数是否与服务器的参数一致。

另外,此提示是由服务的直接断开链接的!此时服务器是接受到你所提供的参数的,只是验证不通过!

昨晚向同事写的python接口post图像数据的时候,出现了这个提示,但一次链接是没有这种问题的(StutasCode提示为400),但第二次发送的时候,就提示:SocketException: 你的主机中的软件中止了一个已建立的连接。开始以为是接口写的由问题,但是同事的python脚本却能够正常上传。后面测试发现,原来是与服务器接口的数据要求格式不同,经过修改代码后,能够正确发送。##附上p...
1、错误描述 [2015-06-15 19:13:48 - ddmlib] 您的主机软件中止一个建立连接。 java.io.IOException: 您的主机软件中止一个建立连接。 at sun.nio.ch.SocketDispatcher.write0(Native Method) at sun.nio.ch.SocketDispatcher.write(Socket
今天搞matplotlib画图的时候突然报错 解决ConnectionAbortedError: [WinError 10053] 你的主机软件中止一个建立连接 于是乎,分享一下刚找到的解决办法, plt.figure(figsize=(4 * train_cols, 4 * train_rows)) 就是这一句出的问题,现在改成小一点的就对了,之前是画布大小设置的太大,所以报错了,虽然不知道啥原因,不过如果你遇见的话可以试着把这个调小一些,也许就ok了。 成功输出的结果: 服务器端报出:你的主机软件中止一个建立连接。 原因唠叨一下: 一开始以为电脑的问题,无缘无故怎么连接了呢,再一想或者是数据库的问题,再或者是服务端的问题,重启eclipse,重启电脑,都没有解决。另外断点调试了一下并没有发现controller存在什么报错的问题。 于是百度了一下,还是可以看到不少关于这个问题的分析的
最近在答疑群,经常看到同学们遇到 `你的主机软件中止一个建立连接` 这样的报错,这个报错可能的原因还挺多的,本质上是,无法连接服务。 一般来说,我们在poco初始化,或者是poco初始化之后“第一个”控件操作的语句,就容易出现这个问题。 下面我们详细看下可能导致这个问题的几个常见场景:
如图,在写django的时候后台报了一个错误。 查了一上午才有了一点思绪,记录一下。 分析原因:前端有异步加载的元素(如页面上显示时间),怀疑导致当前端POST数据提交时,异步加载还在刷新,导致数据二次提交。也会出现如图的错误,导致网页重新发生请求,即第二次请求。