C#通用HTTP请求方法:POST与GET实现

需积分: 9 2 下载量 5 浏览量 更新于2024-08-04 收藏 3KB TXT 举报
"这篇资源提供了一个C#语言编写的通用HttpPost方法,可用于执行POST和GET请求。主要功能是接收一个URL、JSON字符串、内容类型作为输入参数,将POST请求的内容下载并保存到本地,尤其适用于医保目录这类数据的下载。在处理过程中,会对JSON字符串进行转义,并设置合适的超时时间。" 在C#编程中,HTTP请求是网络通信的基础,`HttpPost`方法是用于向服务器发送POST请求的一种常见方式。这个提供的源码实现了通用的POST请求,同时也支持GET请求。以下是对代码的详细解析: 1. **HttpPost方法定义**:方法接受四个参数,`Url`是目标URL,`JsonStr`是待发送的JSON数据,`ContentType`是请求头中的Content-Type字段,`status`用于返回状态信息。 2. **日期处理**:首先获取当前日期的字符串形式,用于日志记录。 3. **日志目录**:定义了一个`stringsDirectory`变量,用于存储日志路径。路径由应用程序的可执行文件路径和固定的"JQLog\"子目录组成,方便记录请求日志。 4. **默认Content-Type**:如果未提供`ContentType`,则将其默认设置为`"application/json"`,表示发送的数据是JSON格式。 5. **JSON字符串转义**:将JSON字符串中的`\r`, `\n`, 和`\t`字符替换为它们的转义序列,这是为了确保在网络传输过程中这些特殊字符不会引起问题。 6. **创建HttpWebRequest对象**:通过`WebRequest.Create`方法创建一个`HttpWebRequest`对象,该对象代表向指定URL发出的请求。 7. **超时设置**:根据URL的不同内容,设置不同的超时时间。如果是特定的URL(如包含"/oauth/v1/token"、"/his-interface/"或"mhis-fwa-platform"),则设置超时时间为3000毫秒,其他情况设置为60000毫秒。 8. **设置请求方法和Content-Type**:将请求方法设置为POST,然后设置Content-Type为之前处理过的值。 9. **写入请求数据**:使用`GetRequestStream`获取请求的输出流,然后将JSON数据转换为字节数组并写入流中,最后关闭流。 10. **发送请求并获取响应**:调用`GetResponse`方法发送请求并获取`HttpWebResponse`对象,这代表了服务器对请求的响应。 11. **处理响应**:这里省略了部分代码,实际应用中,开发者会从`HttpWebResponse`中读取响应数据,例如响应状态码、响应头和响应体等。 12. **异常处理**:整个过程包裹在try-catch块中,用于捕获可能出现的异常,并在异常发生时进行相应的错误处理。 这段代码是实现HTTP POST请求的一个基础示例,可以根据实际需求进行扩展,比如添加错误处理、证书验证、身份验证等功能。同时,它也可以作为GET请求的基础,只需将`Method`设置为`GET`,并移除写入请求流的部分即可。