using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;

namespace Tt.KD100.Initiative.WinService
{
  /// <summary>
  /// 请求信息帮助
  /// </summary>
  public class HttpHelper
  {
    /// <summary>
    /// post 请求指定地址返回响应数据
    /// </summary>
    /// <param name="url">请求地址</param>
    /// <param name="postData">请求数据</param>
    /// <param name="timeout">请求超时时间(毫秒)</param>
    /// <param name="requestCoding">请求编码</param>
    /// <param name="responseCoding">响应编码</param>
    /// <returns></returns>
    public string PostRequest(string url, Dictionary<string, string> postData, int timeout,Encoding requestCoding, Encoding responseCoding)
    {
      string postStr = string.Empty;
      if (postData!=null)
      {
        postData.All(o =>
                       {
                         if (string.IsNullOrEmpty(postStr))
                           postStr = string.Format("{0}={1}", o.Key, o.Value);
                         else
                           postStr += string.Format("&{0}={1}", o.Key, o.Value);

return true;
                       });
      }
      return PostRequest(url, postStr,timeout, requestCoding, responseCoding);
    }
    /// <summary>
    /// post 请求指定地址返回响应数据
    /// </summary>
    /// <param name="url">请求地址</param>
    /// <param name="postData">请求数据</param>
    /// <param name="timeout">请求超时时间(毫秒)</param>
    /// <param name="requestCoding">请求编码</param>
    /// <param name="responseCoding">响应编码</param>
    /// <returns></returns>
    public string PostRequest(string url, string postData,int timeout, Encoding requestCoding,Encoding responseCoding)
    {
      string postUrl = VerifyUrl(url);
      try
      {
        //写入POSTDATE里
        byte[] byteArray = requestCoding.GetBytes(postData);
        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
        webRequest.Method = "POST";
        webRequest.Timeout = timeout;
        webRequest.ContentType = "application/x-www-form-urlencoded";
        webRequest.ContentLength = byteArray.Length;
        Stream newStream = webRequest.GetRequestStream();
        newStream.Write(byteArray, 0, byteArray.Length);
        newStream.Close();
        //接收返回信息:
        HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
        StreamReader php = new StreamReader(response.GetResponseStream(), responseCoding);
        string result = php.ReadToEnd();
        return result;
      }
      catch (Exception ex)
      {
        Grass.Log.ExceptionsStack.RegisterError(ex);
        return string.Empty;
      }
    }
    /// <summary>
    /// 验证URL
    /// </summary>
    /// <param name="url">待验证 URL</param>
    /// <returns></returns>
   private string VerifyUrl(string url)
    {
      if(string.IsNullOrEmpty(url))
        throw new Exception("URL 地址不可以为空!");

if (url.StartsWith("http://", StringComparison.CurrentCultureIgnoreCase))
        return url;

return string.Format("http://{1}", url);
    }
  }
}

转载于:https://www.cnblogs.com/xxj-jing/archive/2012/10/24/2890044.html

C# winform post 请求指定 url相关推荐

  1. Java实现向指定URL用POST方法发送Json格式字符串参数请求的工具类

    场景 SpringBoot项目中通过后台Controller向某服务接口发送POST请求. 实现 在项目pom.xml中添加依赖 <dependency><groupId>co ...

  2. 向指定URL发送GET或POST请求(调第三方接口)

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  3. 一个请求从 URL 字符串到 HTML 代码的“漫长曲折”之路

    作者:Dino Esposito       出处:msdn ASP.NET HTTP 运行时 一个请求从 URL 字符串到 HTML 代码的"漫长曲折"之路 Dino Espos ...

  4. 从Internet上抓取指定URL的源码的方案

    从Internet上抓取指定URL的源码的方案 作者: 引言: 在做无线项目的时候,与通讯公司的数据通讯有一部分是通过XML交互的,所以必须要动态抓取通讯公司提供的固定的Internet上的数据,便研 ...

  5. node.js 针对不同的请求路径(url) 做出不同的响应

    边看这个边写的: http://wenku.baidu.com/link?url=C4yLe-TVH6060u_x4t34H3Ze8tjoL7HjJaKgH-TvHnEYl-T_gAMYwhmrCeM ...

  6. avascript怎么获取指定url网页中的内容

    目录 一.总结 一句话总结:推荐jquery中ajax,简单方便. 1.js能跨域操作么? 二.用php获取 三.jquery中ajax获取 四.通过node.js获取 回到顶部 >  一.总结 ...

  7. 【js操作url参数】获取指定url参数值、取指定url参数并转为json对象

    获取指定url参数值 /* 获取某url中的某参数值 调用:GetUrlQueryString("[url地址]","[参数名]"); */ function ...

  8. 利用python获取指定url在ATS中缓存对象的信息

    业务需求 给定url,如何查询指定的ATS中是否有该url的缓存对象信息?如果缓存了的话,希望提供该缓存对象的大小,缓存时间,缓存文件名,缓存份数(document alternative)等等信息 ...

  9. ajax提交相对路径报错,ajax提交请求为啥url要用这个函数encodeURI

    参考如下: 如果你是通过form提交的,那就不需要用这个了.但是如果是你使用url的方式 例如:ajax提交到后台的,就需要对url进行encodeURI编码, 否则,会导致后台出现各种乱码,不加en ...

  10. GET请求中URL的最大长度限制总结

    由于jsonp跨域请求只能通过get请求,url长度根据浏览器及服务器的不同而有不同限制. 若要支持IE的话,最大的长度为2083字符,若是中文字符的话只有2083/9=231个字符. 若是Chrom ...

最新文章

  1. RecyclerView中adapter列表里有EditText输入框问题(使用不复用方法解决)
  2. node js npm 和 cnpm的使用
  3. C++ 标准库类型 vector
  4. pandas中合并数据集
  5. 零起点入门教程:1分钟极简操作,新手也能搭应用
  6. Spring Boot————Spring Data JPA简介
  7. 每天学一点flash(75) ToolTip 提示
  8. html第八章制作花样链接卡,利用flex布局横向滚动制作滑动选项卡以及内容滑块...
  9. 阻止默认事件event.preventDefault();
  10. Linux 安装jdk8
  11. Javascript-history.go()和history.back()的用法和区别
  12. 无线呼叫服务器对码设置,无线鼠标对码模式怎么设置
  13. 鲁班学院java高级架构师_鲁班学院三期java架构师
  14. ( vscode中文版 ) 怎么快速打开vscode settings.json文件
  15. 华退学博士王垠:离开是为了获得力量后再回来
  16. python文字处理dummy_python – 使用’dummy’变量创建数学函数,以便稍后进行评估...
  17. 方波的产生——555 产生方波
  18. Java实现生成并下载Excel文件
  19. WINVNC源码分析(四)——IO之rdr库
  20. 面向Python开发人员的综合置信区间全面理解

热门文章

  1. RedHat 救援模式下排错
  2. idea license 20200104
  3. HTTP API 设计指南
  4. Https 真的安全吗?可以抓包吗?如何防止抓包吗?
  5. 我的天!!线上千万级大表排序,如何优化?
  6. MySQL 事务的实现原理,写得太好了!
  7. Azure 宕机 3 个小时:因人为配置 DNS 失误
  8. Springboot项目使用aop添加日志
  9. 使用UUID和int自增主键的区别
  10. 安装libvirt管理套件(C/S架构模式,用户管理kvm虚拟机)