文档章节

Post提交数据到接口或网址 获取返回数据

深圳大道
 深圳大道
发布于 2016/12/29 15:32
字数 664
阅读 6
收藏 0
/// <summary>
    /// POST提交XML文件获取返回数据
    /// </summary>
    /// <param name="url">网址</param>
    /// <param name="strPost">XML数据</param>
    /// <returns></returns>
    private string PostXml(string url, string strPost)
    {
        string result = "";

        StreamWriter myWriter = null;

        HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
        objRequest.Method = "POST";
        objRequest.ContentLength = strPost.Length;
        objRequest.ContentType = "text/xml";//提交xml 
        //objRequest.ContentType = "application/x-www-form-urlencoded";//提交表单
        try
        {
            myWriter = new StreamWriter(objRequest.GetRequestStream());
            myWriter.Write(strPost);
        }
        catch (Exception e)
        {
            return e.Message;
        }
        finally
        {
            myWriter.Close();
        }

        HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
        using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
        {
            result = sr.ReadToEnd();
            sr.Close();
        }
        return result;
    }

    /// <summary>
    /// Post提交获取返回数据
    /// </summary>
    /// <param name="url">网址</param>
    /// <returns></returns>
    protected string GetWebContent(string url)
    {
        Stream outstream = null;
        Stream instream = null;
        StreamReader sr = null;
        HttpWebResponse response = null;
        HttpWebRequest request = null;
        // 要注意的这是这个编码方式,还有内容的Xml内容的编码方式
        Encoding encoding = Encoding.GetEncoding("UTF-8");
        byte[] data = encoding.GetBytes(url);

        // 准备请求,设置参数
        request = WebRequest.Create(url) as HttpWebRequest;
        request.Method = "POST";
        //request.ContentType = "text/plain";
        request.ContentLength = data.Length;

        outstream = request.GetRequestStream();
        outstream.Write(data, 0, data.Length);
        outstream.Flush();
        outstream.Close();
        //发送请求并获取相应回应数据

        response = request.GetResponse() as HttpWebResponse;
        //直到request.GetResponse()程序才开始向目标网页发送Post请求
        instream = response.GetResponseStream();
        sr = new StreamReader(instream, encoding);
        //返回结果网页(html)代码

        string content = sr.ReadToEnd();
        return content;
    }

#region WebService返回的Xml转换成DataSet
    /// <summary>
    /// WebService返回的Xml转换成DataSet
    /// </summary>
    /// <param name="text">Xml字符</param>
    /// <returns></returns>
    private DataSet GetDataSet(string text)
    {
        try
        {
            XmlTextReader reader = new XmlTextReader(new StringReader(text));
            reader.WhitespaceHandling = WhitespaceHandling.None;
            DataSet ds = new DataSet();
            ds.ReadXml(reader);
            reader.Close();
            ds.Dispose();
            return ds;
        }
        catch
        {
            return null;
        }
    }
    #endregion
#region 后台获取ashx返回的数据
    /// <summary>
    /// 后台获取ashx返回的数据
    /// </summary>
    /// <param name="relativePath">地址</param>
    /// <param name="data">参数</param>
    /// <returns></returns>
    public static string GetRequestJsonString(string relativePath, string data)
    {
        string requestUrl = GetRequestUrl(relativePath, data);

        try
        {
            WebRequest request = WebRequest.Create(requestUrl);
            request.Method = "GET";

            StreamReader jsonStream = new StreamReader(request.GetResponse().GetResponseStream());
            string jsonObject = jsonStream.ReadToEnd();

            return jsonObject;
        }
        catch
        {
            return string.Empty;
        }
    }

    public static string GetRequestUrl(string relativePath, string data)
    {
        string absolutePath = HttpContext.Current.Request.Url.AbsoluteUri;
        string hostNameAndPort = HttpContext.Current.Request.Url.Authority;
        string applicationDir = HttpContext.Current.Request.ApplicationPath;
        StringBuilder sbRequestUrl = new StringBuilder();
        sbRequestUrl.Append(absolutePath.Substring(0, absolutePath.IndexOf(hostNameAndPort)));
        sbRequestUrl.Append(hostNameAndPort);
        sbRequestUrl.Append(applicationDir);
        sbRequestUrl.Append(relativePath);
        if (!string.IsNullOrEmpty(data))
        {
            sbRequestUrl.Append("?");
            sbRequestUrl.Append(data);
        }
        return sbRequestUrl.ToString();
    }
    #endregion
//模拟提交数据给接口,获取返回字符串
    protected void Button1_Click(object sender, EventArgs e)
    {
        System.Net.WebClient client = new WebClient();
        System.Collections.Specialized.NameValueCollection collect = new System.Collections.Specialized.NameValueCollection();
        collect.Add("id", "11111");
        collect.Add("name", "lee");
        Byte[] pageData = client.UploadValues("http://localhost:86/Ajax/Handler2.ashx", collect);
        string pageHtml = Encoding.UTF8.GetString(pageData);
        Response.Write(pageHtml);
    }
<%@ WebHandler Language="C#" Class="Handler2" %>
using System;
using System.Web;

public class Handler2 : IHttpHandler {    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        string id = context.Request["id"];
        string name = context.Request["name"];
        string returnStr = string.Empty;
        if (!string.IsNullOrEmpty(id)&& !string.IsNullOrEmpty(name))
        {
            returnStr = "序号" + id + ",姓名" + name;
            context.Response.Write(returnStr);
        }
        context.Response.End();
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }
}
#region 提交Json数据且获取接口返回的数据  
/// <summary>
/// 提交Json数据且获取接口返回的数据
/// </summary>
/// <param name="url">网址</param>
/// <param name="method">Get/Post</param>
/// <param name="postDataStr">提交数据{"name":"zhangsan","pwd":"123456"}</param>
/// <returns></returns>
private string HttpPost(string url, string method, string postDataStr)
{
	HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
	request.Method = method;

	if (!string.IsNullOrWhiteSpace(postDataStr))
	{
		request.ContentType = "application/json";
		byte[] postData = Encoding.UTF8.GetBytes(postDataStr);
		request.ContentLength = postData.Length;
		System.IO.Stream outputStream = request.GetRequestStream();
		outputStream.Write(postData, 0, postData.Length);
		outputStream.Close();
	}

	HttpWebResponse 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;
}
#endregion



本文转载自:http://blog.csdn.net/smartsmile2012/article/details/8772578

共有 人打赏支持
深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
python-55: 验证码的生成机制

前面的尝试失败了,为什么呢? 大家可以看到,我们使用了两次urlopen,第一次是打开登陆界面的网址获取验证码的地址,第二次是post数据到指定的网址,我们虽然获取到了验证码,但是这其实是一...

达岭凹老大
2015/12/13
278
0
Qt 获取cookie与 post 提交 操作

最近想做一个post填表提交的程序 流程: 访问网址后获取cookie(疑问点1),筛选出需要的数据(正则OK),数据处理后post提交(疑问点2)。 疑问点1:百度了好多,没理出头绪,希望大家给予帮...

643166069
2017/06/13
369
1
web接口测试GET与POST请求

我们想要打开一个网站,首先是需要往浏览器的地址的URL输入框架中输入网地址。当我敲下回车后,通过HTTP协议,将网址传送到域名解析服务器,域名解析服务器根据网址找到对应的IP主机(系统服...

itzhongxin
2017/06/12
0
0
雪峰磁针石博客]flask构建自动化测试平台4-用户输入

章将介绍以下主题: 使用HTTP GET获取用户输入 使用HTTP POST获取用户输入 添加天气和货币数据 本文最新版本 GET HTTP GET从用户获取有限的非敏感信息,以便服务器根据GET参数的要求返回页面...

Python测试开发人工智能
2018/07/08
0
0
谷歌google短网址goo.gl的API

之前发不过一个谷歌(google)二维码生成方法,之前的方法中使用到了谷歌的另外一个产品--短网址(goo.gl).短网址怎么生成呢?请看. 谷歌(google)官方是有开放性的API的,不过我找了找,一个人外文资...

罪恶的花生
2012/03/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rabbitmq安装教程

RabbitMQ有Windows与Linux版本的,这里先写Windows版本的安装。 以前安装软件总是在百度上找某某安装教程,结果能按照教程安装好的软件真的不多。想起先前以为大牛说的一句话,去官网按照官网...

em_aaron
今天
6
0
Android 贝塞尔曲线实践——波浪式运动

一、波浪效果如下 贝塞尔曲线自定义波浪效果的案例很多,同样方法也很简单,大多数和本案例一样使用二次贝塞尔曲线实现,同样还有一种是PathMeasure的方式,这里我们后续补充,先来看贝塞尔曲...

IamOkay
今天
3
0
Nmap之防火墙/IDS逃逸

选项 解释 -f 报文分段 --mtu 指定偏移大小 -D IP欺骗 -sI 原地址欺骗 --source-port 源端口欺骗 --data-length 指定发包长度 --randomize-hosts 目标主机随机排序 --spoof-mac Mac地址欺骗 ...

Frost729
今天
2
0
带你搭一个SpringBoot+SpringData JPA的环境

不知道大家对SpringBoot和Spring Data JPA了解多少,如果你已经学过Spring和Hibernate的话,那么SpringBoot和SpringData JPA可以分分钟上手的。 其实我在学完SpringBoot和SpringData JPA了之...

java菜分享
今天
7
0
Chocolatey 在Window搭建一个开发环境

在看了(利用 Chocolatey 快速在 Windows 下搭建一个开发环境)后,准备从零开始 一、准备工作 1、用管理员权限启动:powershell,执行错误请参考(PowerShell因为在此系统中禁止执行脚本的解...

近在咫尺远在天涯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部