/// Post data到url /// </summary> /// <param name="data">要post的数据</param> /// <param name="url">目标url</param> /// <returns>服务器响应</returns> static string PostDataToUrl(string data, string url) { Encoding encoding = Encoding.GetEncoding(sRequestEncoding); byte[] bytesToPost = encoding.GetBytes(data);
return PostDataToUrl(bytesToPost, url); } /// <summary> /// Post data到url /// </summary> /// <param name="data">要post的数据</param> /// <param name="url">目标url</param> /// <returns>服务器响应</returns> static string PostDataToUrl(byte[] data, string url) { #region 创建httpWebRequest对象 WebRequest webRequest = WebRequest.Create(url); HttpWebRequest httpRequest = webRequest as HttpWebRequest; if (httpRequest == null) { throw new ApplicationException( string.Format("Invalid url string: {0}", url) ); } #endregion #region 填充httpWebRequest的基本信息 httpRequest.UserAgent = sUserAgent; httpRequest.ContentType = sContentType; httpRequest.Method = "POST"; #endregion #region 填充要post的内容 httpRequest.ContentLength = data.Length; Stream requestStream = httpRequest.GetRequestStream(); requestStream.Write(data, 0, data.Length); requestStream.Close(); #endregion #region 发送post请求到服务器并读取服务器返回信息 Stream responseStream; try { responseStream = httpRequest.GetResponse().GetResponseStream(); } catch(Exception e) { // log error Console.WriteLine( string.Format("POST操作发生异常:{0}", e.Message) ); throw e; } #endregion #region 读取服务器返回信息 string stringResponse = string.Empty; using(StreamReader responseReader = new StreamReader(responseStream, Encoding.GetEncoding(sResponseEncoding))) { stringResponse = responseReader.ReadToEnd(); } responseStream.Close(); #endregion return stringResponse; } Response.Write(PostDataToUrl("test", "http://localhost:2794/test.aspx"));
有几个地方不是很不明白byte[] bytesToPost = encoding.GetBytes(data); 到底是如何用处的呢 byte[] 还不知道怎么用法Response.Write(PostDataToUrl("test", "http://localhost:2794/test.aspx")); 这个输出的test.aspx内容。 怎么按一定的数据输出呢?比如 循环读取。 HttpWebRequest 调用 还不是了解。 搜索了很多 ,看都比较模糊。哪个高手讲解下呢? 谢谢。
这个 如何接受POST过来的 数据呢
{
int Id = Convert.ToInt32(Request.Params["Id"]);
}
就可以接收参数了。你不需要深入了解HttpRequestWeb
{
MemoryStream stream = new MemoryStream();
WebRequest request = HttpWebRequest.Create("http://www.cnblogs.com");
request.Method = "POST";
Stream requestStream = request.GetRequestStream();
byte[] buffer = new byte[10];
requestStream.Write(buffer, 0, 10);
requestStream.Close();
request.BeginGetResponse(HandleAsyncCallback, request); Console.WriteLine("(Main) Is pool thread: {0}, Hash: {1}",
Thread.CurrentThread.IsThreadPoolThread,
Thread.CurrentThread.GetHashCode()); Console.ReadLine();
} static void HandleAsyncCallback(IAsyncResult ar)
{
WebRequest request = (WebRequest)ar.AsyncState;
WebResponse response = request.EndGetResponse(ar); Console.WriteLine("(HandleAsyncCallback) Is pool thread: {0}, Hash: {1}",
Thread.CurrentThread.IsThreadPoolThread,
Thread.CurrentThread.GetHashCode());
}
//利用httpRequest对象获取远程URL服务端的响应流并赋给requestStream
Stream requestStream = httpRequest.GetRequestStream();
//将获取的响应流写入到data这个字节数组里
requestStream.Write(data, 0, data.Length);