这几天给系统做第三方集成, 需要调用另一个软件的一个接口, 通过 HTTP 的方式调用,调用代码也挺简单的:

string serviceUrl = string.Format("{0}/{1}", this.BaseUrl, path);
HttpWebRequest request = null;
Stream reqStream = null;
request = (System.Net.HttpWebRequest)WebRequest.Create(serviceUrl);
request.Method = "POST";
request.Accept = "*/*";
request.ContentType = "application/json;charset=UTF-8"; byte[] postData = Encoding.UTF8.GetBytes(param);
reqStream = request.GetRequestStream();
reqStream.Write(postData, , postData.Length);
using (var response = (HttpWebResponse)request.GetResponse())
{
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("UTF-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}

代码也没有什么特别的,但是当代码执行到  request.GetResponse() 时,程序是不报错, 也不往下执行了,就一直卡在这里,服务器端也没有接收到请求(服务端是没有问题的),找了一上午,各种属性都设置了一遍,都没有效果,最后突然想到好像少了给 request 设置一个 ContentLength 属性, 马上加上 request.ContentLength = postData.Length, 再测试就好了。

这个问题找这么久, 是因为刚开始在我本地做测试的时候是没有问题, 一切都正常, 部署到服务器上后发现调用不通, 所以刚开始以为是服务器这边有什么端口限制什么的,所以一直在叫服务器管理人员查网络设置,后来为了测试方便,在本地创建了一个 WINFORM 程序来测试,发现在 WINFORM 程序里测试的时候也不行了,再运行之前的写的测试程序,又可以, 比较了一下两个 .NET 版本,之前使用的是 .NET FRAMEWORK 4.7, WINFORM 使用的是 .NET FRAMEWORK 3.5。

在 .net framework 4.7 应该对这个属性做了处理, 但是在 3.5 里, 没有这个属性, 就没有任何反应,这个也太坑了点, 抛出一个异常也好啊!

-----

今天(2020-03-18)在处理一个项目的接口, 又发生超时的问题, ContentLength 属性也加了, 都没用, 使用 postman 请求没问题, 网址使用浏览器也可以访问, 但是就是使用 .net 代码请求有问题, 这次在 .NET 4.8 下面测试都不行,最后经测试,发现还需要设置一个属性:

request.ServicePoint.Expect100Continue = false;

好吧, 终于可以请求了!

使用 HttpWebRequest 类做 POST 请求没有应反的更多相关文章

  1. C#利用 HttpWebRequest 类发送post请求,出现“套接字(协议/网络地址/端口)只允许使用一次”问题

    声明:问题虽然已经被解决,但是并没有明白具体原理,欢迎大佬补充. 最近网站出现一个问题,在C#里面使用  HttpWebRequest 类去发送post请求,偶尔 会出现 “套接字(协议/网络地址/端 ...

  2. C#中调用HttpWebRequest类中Get/Post请求无故失效的诡异问题

    先附代码 /// <summary> /// 客户端Http(GET) /// </summary> /// <param name="strUrl" ...

  3. C# 之 HttpWebRequest类

    提供 WebRequest 类的 HTTP 特定的实现.       继承层次结构 System.Object → System.MarshalByRefObject →  System.Net.We ...

  4. 使用 HttpWebRequest 发送模拟 POST 请求

    使用HttpWebRequest发送模拟POST请求  网页中,如果form的method="POST",这时点击submit按钮可以给服务器发送了一个POST请求,如果metho ...

  5. 利用HttpWebRequest类Post数据至URI

    在与第三方系统进行数据对接时,需要把数据post到对方提供的一个url,然后进行相关处理. 这里可利用HttpWebRequest类,该类位于System.Net命名空间下.它提供了一些属性和方法可以 ...

  6. C# HTTP系列1 HttpWebRequest类

    系列目录     [已更新最新开发文章,点击查看详细] .NET Framework 中 System.Net 命名空间下提供了 HttpWebRequest 和 HttpWebResponse 2个 ...

  7. HttpWebRequest类

    HttpWebRequest类与HttpRequest类的区别. HttpRequest类的对象用于服务器端,获取客户端传来的请求的信息,包括HTTP报文传送过来的所有信息.而HttpWebReque ...

  8. C# HttpWebRequest类

    HttpWebRequest类与HttpRequest类的区别. HttpRequest类的对象用于服务器端,获取客户端传来的请求的信息,包括HTTP报文传送过来的所有信息.而HttpWebReque ...

  9. VB.NET中网络编程的另一种方案----system.net中的HttpWebRequest类的使用

    VB.NET中网络编程的另一种方案---- system.net中的HttpWebRequest类的使用 在VB.net中进行网络编程,除了我之前写的随笔中的使用WinHttp组件进行编程,还有另一种 ...

随机推荐

  1. mysql在windows下安装(含客户端工具)

    下载 http://dev.mysql.com/downloads/ 安装 在出现选择安装类型的窗口中,有“typical(默认)”.“Complete(完全)”.“Custom(用户自定义)”三个选 ...

  2. nginx proxy_pass 指令

    nginx proxy_pass 指令 文档 Nginx 官方文档 https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pa ...

  3. NOIP 2003 栈

    洛谷 P1044 栈 洛谷传送门 JDOJ 1291: [NOIP2003]栈 T3 JDOJ传送门 题目描述 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两 ...

  4. Anaconda3(4)安装pytorch

    安装链接 https://pytorch.org/ 0在anaconda3安装python3.6环境  https://blog.csdn.net/u012005313/article/details ...

  5. Django 1.11 使用命令makemigrations命令无法执行表修改动作

    由于在学习过程中,遇到models模型变动,变动后合并发生问题,故当时做了删除应用文件夹下migrations文件,由于数据库里无较多新数据,故删除后重建,但重建后执行模型合并操作结果为No Chan ...

  6. pytest--常用插件

    前戏 虽然pytest给我们提供了很多的功能,但是有些功能还是没有,而pytest的插件可以满足我们的需求,比如用例失败重跑,统计代码覆盖率等等功能. pytest-sugar pytest-suga ...

  7. 剑指offer 面试题8:二叉树的下一个节点

    题目:给定一棵二叉树和其中一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左.右节点的指针,还有一个节点指向父节点的指针. 中序遍历序列是{d,b,h,e,i,a,f,c,g} ...

  8. python 项目实战之logging日志打印

    官网介绍:https://docs.python.org/2/library/logging.html 一. 基础使用 1.1 logging使用场景 日志是什么?这个不用多解释.百分之九十的程序都需 ...

  9. springboot自定义页面拦截

    项目结构图 页面拦截代码 @Configuration public class WebConfig implements WebMvcConfigurer { @Override public vo ...

  10. BuaaRedSun团队博客目录——北航社团项目

    目录 一.Scrum Meeting 1. Alpha 2. Beta 3. Gamma 二.测试报告 三.发布说明 四.技术博客 后端 前端 五.习得的软工原理/方法/技能? Alpha Beta ...