c# .net 后台的httpwebrequest方法可以跨域访问吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# .net 后台的httpwebrequest方法可以跨域访问吗?相关的知识,希望对你有一定的参考价值。
具体代码如下:
var request = (HttpWebRequest)WebRequest.Create(url);
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
public void sendPost(string urlArgs,HttpContext context)
//context.Request["args"]
System.Net.WebClient wCient = new System.Net.WebClient();
wCient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
byte[] postData = System.Text.Encoding.ASCII.GetBytes("id=" + urlArgs);
byte[] responseData = wCient.UploadData(URL, "POST", postData);
string returnStr = System.Text.Encoding.UTF8.GetString(responseData);//返回接受的数据
context.Response.ContentType = "text/plain";
context.Response.Write(returnStr);
除了上面的方法还有可以使用JSONP来实现,具体应用JSONP实现Json数据跨域调用,需要服务器端与客户端的合作完成。关于JSONP的具体使用方式,网上有很多相关的资料可以参考。这里就暂时做个记录,以后用到的话再具体分析。
参考技术A “跨域”是针对前端浏览器而言,A域的页面里想访问B域里的资源(IMG、JS、CSS、AJAX等等)叫做“跨域”。浏览器出于安全目的的考虑,默认禁止了AJAX跨域。也就是说,AJAX跨域被阻止是浏览器本身造成的,并不是后端引发的(后端判断Referer那不叫阻止跨域)。
而且后端不存在什么“A域里的页面”,何来“跨域”?本回答被提问者采纳
C# HttpWebRequest 绝技
get方法
public static string GetUrltoHtml(string Url,string type) { try { System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url); // Get the response instance. System.Net.WebResponse wResp = wReq.GetResponse(); System.IO.Stream respStream = wResp.GetResponseStream(); // Dim reader As StreamReader = New StreamReader(respStream) using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding(type))) { return reader.ReadToEnd(); } } catch (System.Exception ex) { //errorMsg = ex.Message; } return ""; }
post方法
///<summary> ///采用https协议访问网络 ///</summary> ///<param name="URL">url地址</param> ///<param name="strPostdata">发送的数据</param> ///<returns></returns> public string OpenReadWithHttps(string URL, string strPostdata, string strEncoding) { Encoding encoding = Encoding.Default; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); request.Method = "post"; request.Accept = "text/html, application/xhtml+xml, */*"; request.ContentType = "application/x-www-form-urlencoded"; byte[] buffer = encoding.GetBytes(strPostdata); request.ContentLength = buffer.Length; request.GetRequestStream().Write(buffer, 0, buffer.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using( StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding(strEncoding))) { return reader.ReadToEnd(); } }
以上是关于c# .net 后台的httpwebrequest方法可以跨域访问吗?的主要内容,如果未能解决你的问题,请参考以下文章
C#后台HttpWebRequest模拟跨域Ajax请求,注册Windows服务到服务器上
C#后台HttpWebRequest模拟跨域Ajax请求,注册Windows服务到服务器上
急急急!C#中winform发送 HttpWebRequest请求,不能连续发送