文档章节

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

深圳大道
 深圳大道
发布于 2016/12/29 15:37
字数 664
阅读 11
收藏 1
/// <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

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
多线程同时加载缓存实现

import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorServi......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
2
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部