Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将数据从C#应用程序发送到网站/Web服务器?_C#_Php_Apache_Http_Post - Fatal编程技术网

是否可以将数据从C#应用程序发送到网站/Web服务器?

是否可以将数据从C#应用程序发送到网站/Web服务器?,c#,php,apache,http,post,C#,Php,Apache,Http,Post,我希望有人能帮我解答一个多年来一直困扰我的问题 是否可以在打开浏览器时将数据从C#应用程序发送到网页,例如,如果您有在线登录表单,并且希望从C#应用程序向该表单发布用户名和密码 我看到类似于打开浏览器的表单页面,并将登录详细信息从程序发布到该页面,然后该页面可以直接处理表单,从而将其登录并发送到主页。这可能吗 提前谢谢 保罗是的 您可以使用HttpWebRequest与网页或web服务器(或web服务)通信。这是我用来从facebook url获取数据的实际代码: internal static

我希望有人能帮我解答一个多年来一直困扰我的问题

是否可以在打开浏览器时将数据从C#应用程序发送到网页,例如,如果您有在线登录表单,并且希望从C#应用程序向该表单发布用户名和密码

我看到类似于打开浏览器的表单页面,并将登录详细信息从程序发布到该页面,然后该页面可以直接处理表单,从而将其登录并发送到主页。这可能吗

提前谢谢

保罗是的

您可以使用HttpWebRequest与网页或web服务器(或web服务)通信。这是我用来从facebook url获取数据的实际代码:

internal static string FbFetch(string url)
{
    var request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "GET";
    using (var response = (HttpWebResponse)request.GetResponse())
    {
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            var responseText = reader.ReadToEnd();
            return responseText;
        }
    }
}
但是,您所描述的被称为“HTML屏幕抓取”,对于构建应用程序来说,这可能是一种乏味而脆弱的方法。单调是因为很难沉迷于所有的UI糖果,而脆弱是因为如果页面设计师更改页面,您的屏幕抓取将不再工作


祝你好运。

要回答你关于HTTP帖子(带附件)的问题,因为有附件,要困难得多。这是我在FaceBook上发布图片时使用的实际代码

    /// <summary>
    /// Create a new HttpWebRequest with the default properties for HTTP POSTS
    /// </summary>
    /// <param name="url">The URL to be posted to</param>
    /// <param name="referer">The refer</param>
    /// <param name="cookies">CookieContainer that should be used in this request</param>
    /// <param name="postData">The post data</param>
    private string CreateHttpWebUploadRequest(string url, string referer, CookieContainer cookies, NameValueCollection postData, FileInfo fileData, string fileContentType)
    {
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
        string boundary = "----------" + DateTime.UtcNow.Ticks.ToString("x", CultureInfo.InvariantCulture);

        // set the request variables
        request.Method = WebRequestMethods.Http.Post;
        request.ContentType = "multipart/form-data; boundary=" + boundary;
        request.CookieContainer = cookies;
        request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.55 Safari/533.4";
        request.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, */*";
        request.Headers.Add("Accept-Encoding: gzip,deflate");
        request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
        request.Headers.Add("Accept-Language: en-us");
        request.Referer = referer;
        request.KeepAlive = true;
        request.AllowAutoRedirect = false;

        // process through the fields
        StringBuilder sbHeader = new StringBuilder();

        // add form fields, if any
        if (postData != null)
        {
            foreach (string key in postData.AllKeys)
            {
                string[] values = postData.GetValues(key);
                if (values != null) 
                {
                    foreach (string value in values)
                    {
                        if (!string.IsNullOrEmpty(value))
                            sbHeader.AppendFormat("--{0}\r\n", boundary);
                            sbHeader.AppendFormat("Content-Disposition: form-data; name=\"{0}\";\r\n\r\n{1}\r\n", key, value);
                    }
                }
            }
        }

        if (fileData != null)
        {
            sbHeader.AppendFormat("--{0}\r\n", boundary);
            sbHeader.AppendFormat("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n", "media", fileData.Name);
            sbHeader.AppendFormat("Content-Type: {0}\r\n\r\n", fileContentType);
        }

        byte[] header = Encoding.UTF8.GetBytes(sbHeader.ToString());
        byte[] footer = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
        long contentLength = header.Length + (fileData != null ? fileData.Length : 0) + footer.Length;

        // set content length
        request.ContentLength = contentLength;

        using (Stream requestStream = request.GetRequestStream())
        {
            requestStream.Write(header, 0, header.Length);

            // write the uploaded file
            if (fileData != null)
            {
                // write the file data, if any
                byte[] buffer = new Byte[fileData.Length];
                var bytesRead = fileData.OpenRead().Read(buffer, 0, (int)(fileData.Length));
                requestStream.Write(buffer, 0, bytesRead);
            }

            // write footer
            requestStream.Write(footer, 0, footer.Length);
            requestStream.Flush();
            requestStream.Close();

            using (var response = request.GetResponse() as HttpWebResponse)
            {
                using (var stIn = new System.IO.StreamReader(response.GetResponseStream()))
                {
                    return stIn.ReadToEnd();
                }
            }
        }
    }
    /// <summary>
    /// Create a new HttpWebRequest with the default properties for HTTP POSTS
    /// </summary>
    /// <param name="url">The URL to be posted to</param>
    /// <param name="referer">The refer</param>
    /// <param name="cookies">CookieContainer that should be used in this request</param>
    /// <param name="postData">The post data (needs to be formatted in name=value& format</param>
    private string CreateHttpWebPostRequest(string url, string referer, CookieContainer cookies, NameValueCollection postData)
    {
        var sbPostData = new StringBuilder();

        if (postData != null)
        {
            foreach (string key in postData.AllKeys)
            {
                string[] values = postData.GetValues(key);
                if (values != null)
                {
                    foreach (string value in values)
                    {
                        if (!string.IsNullOrEmpty(value))
                            sbPostData.Append(string.Format("{0}={1}&", HttpUtility.UrlEncode(key), HttpUtility.UrlEncode(value)));
                    }
                }
            }
        }

        var parameterString = Encoding.UTF8.GetBytes(sbPostData.ToString());
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
        request.Method = WebRequestMethods.Http.Post;
        request.CookieContainer = cookies;
        request.ContentLength = parameterString.Length;
        request.ContentType = "application/x-www-form-urlencoded";
        request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.55 Safari/533.4";
        request.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, */*";
        request.Headers.Add("Accept-Encoding: gzip,deflate");
        request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
        request.Headers.Add("Accept-Language: en-us");
        request.Referer = referer;
        request.KeepAlive = true;
        request.AllowAutoRedirect = false;

        using (Stream requestStream = request.GetRequestStream())
        {
            requestStream.Write(parameterString, 0, parameterString.Length);
            requestStream.Close();

            using (var response = request.GetResponse() as HttpWebResponse)
            {
                using (var stIn = new System.IO.StreamReader(response.GetResponseStream()))
                {
                    return stIn.ReadToEnd();
                }
            }
        }
    }  
//
///使用HTTP POST的默认属性创建新的HttpWebRequest
/// 
///要发布到的URL
///推荐人
///此请求中应使用的CookieContainer
///邮政数据
私有字符串CreateHttpWebUploadRequest(字符串url、字符串引用器、CookieContainer cookies、NameValueCollection postData、FileInfo fileData、字符串fileContentType)
{
HttpWebRequest请求=(HttpWebRequest)HttpWebRequest.Create(url);
字符串边界=“------------”+DateTime.UtcNow.Ticks.ToString(“x”,CultureInfo.InvariantCulture);
//设置请求变量
request.Method=WebRequestMethods.Http.Post;
request.ContentType=“多部分/表单数据;boundary=“+boundary;
request.CookieContainer=cookies;
request.UserAgent=“Mozilla/5.0(Windows;U;Windows NT 6.1;en-US)AppleWebKit/533.4(KHTML,如Gecko)Chrome/5.0.375.55 Safari/533.4”;
request.Accept=“image/gif,image/jpeg,image/pjpeg,image/pjpeg,*/*”;
Add(“接受编码:gzip,deflate”);
request.AutomaticDecompression=DecompressionMethods.Deflate | DecompressionMethods.GZip;
request.Headers.Add(“接受语言:en-us”);
request.Referer=Referer;
request.KeepAlive=true;
request.AllowAutoRedirect=false;
//穿过田野
StringBuilder sbHeader=新的StringBuilder();
//添加表单字段(如果有)
if(postData!=null)
{
foreach(postData.AllKeys中的字符串键)
{
string[]values=postData.GetValues(键);
如果(值!=null)
{
foreach(值中的字符串值)
{
如果(!string.IsNullOrEmpty(值))
sbHeader.AppendFormat(“--{0}\r\n”,边界);
sbHeader.AppendFormat(“内容处置:表单数据;名称=\”{0}\”;\r\n\r\n{1}\r\n”,键,值);
}
}
}
}
if(fileData!=null)
{
sbHeader.AppendFormat(“--{0}\r\n”,边界);
sbHeader.AppendFormat(“内容处置:表单数据;名称=\”{0}\“文件名=\”{1}\“\r\n”,“媒体”,fileData.name);
sbHeader.AppendFormat(“内容类型:{0}\r\n\r\n”,fileContentType);
}
byte[]header=Encoding.UTF8.GetBytes(sbHeader.ToString());
byte[]footer=Encoding.UTF8.GetBytes(“\r\n--”+boundary+”--\r\n”);
long contentLength=header.Length+(fileData!=null?fileData.Length:0)+footer.Length;
//设置内容长度
request.ContentLength=ContentLength;
使用(Stream requestStream=request.GetRequestStream())
{
Write(header,0,header.Length);
//写上传的文件
if(fileData!=null)
{
//写入文件数据(如果有)
byte[]buffer=新字节[fileData.Length];
var bytesRead=fileData.OpenRead().Read(缓冲区,0,(int)(fileData.Length));
写入(缓冲区,0,字节读取);
}
//写页脚
Write(页脚,0,页脚长度);
requestStream.Flush();
requestStream.Close();
使用(var response=request.GetResponse()作为HttpWebResponse)
{
使用(var stIn=new System.IO.StreamReader(response.GetResponseStream())
{
返回stIn.ReadToEnd();
}
}
}
}
更新 为了使其完整,这里是无需文件附件的帖子代码。同样,我使用此代码发布到FaceBook

    /// <summary>
    /// Create a new HttpWebRequest with the default properties for HTTP POSTS
    /// </summary>
    /// <param name="url">The URL to be posted to</param>
    /// <param name="referer">The refer</param>
    /// <param name="cookies">CookieContainer that should be used in this request</param>
    /// <param name="postData">The post data</param>
    private string CreateHttpWebUploadRequest(string url, string referer, CookieContainer cookies, NameValueCollection postData, FileInfo fileData, string fileContentType)
    {
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
        string boundary = "----------" + DateTime.UtcNow.Ticks.ToString("x", CultureInfo.InvariantCulture);

        // set the request variables
        request.Method = WebRequestMethods.Http.Post;
        request.ContentType = "multipart/form-data; boundary=" + boundary;
        request.CookieContainer = cookies;
        request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.55 Safari/533.4";
        request.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, */*";
        request.Headers.Add("Accept-Encoding: gzip,deflate");
        request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
        request.Headers.Add("Accept-Language: en-us");
        request.Referer = referer;
        request.KeepAlive = true;
        request.AllowAutoRedirect = false;

        // process through the fields
        StringBuilder sbHeader = new StringBuilder();

        // add form fields, if any
        if (postData != null)
        {
            foreach (string key in postData.AllKeys)
            {
                string[] values = postData.GetValues(key);
                if (values != null) 
                {
                    foreach (string value in values)
                    {
                        if (!string.IsNullOrEmpty(value))
                            sbHeader.AppendFormat("--{0}\r\n", boundary);
                            sbHeader.AppendFormat("Content-Disposition: form-data; name=\"{0}\";\r\n\r\n{1}\r\n", key, value);
                    }
                }
            }
        }

        if (fileData != null)
        {
            sbHeader.AppendFormat("--{0}\r\n", boundary);
            sbHeader.AppendFormat("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n", "media", fileData.Name);
            sbHeader.AppendFormat("Content-Type: {0}\r\n\r\n", fileContentType);
        }

        byte[] header = Encoding.UTF8.GetBytes(sbHeader.ToString());
        byte[] footer = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
        long contentLength = header.Length + (fileData != null ? fileData.Length : 0) + footer.Length;

        // set content length
        request.ContentLength = contentLength;

        using (Stream requestStream = request.GetRequestStream())
        {
            requestStream.Write(header, 0, header.Length);

            // write the uploaded file
            if (fileData != null)
            {
                // write the file data, if any
                byte[] buffer = new Byte[fileData.Length];
                var bytesRead = fileData.OpenRead().Read(buffer, 0, (int)(fileData.Length));
                requestStream.Write(buffer, 0, bytesRead);
            }

            // write footer
            requestStream.Write(footer, 0, footer.Length);
            requestStream.Flush();
            requestStream.Close();

            using (var response = request.GetResponse() as HttpWebResponse)
            {
                using (var stIn = new System.IO.StreamReader(response.GetResponseStream()))
                {
                    return stIn.ReadToEnd();
                }
            }
        }
    }
    /// <summary>
    /// Create a new HttpWebRequest with the default properties for HTTP POSTS
    /// </summary>
    /// <param name="url">The URL to be posted to</param>
    /// <param name="referer">The refer</param>
    /// <param name="cookies">CookieContainer that should be used in this request</param>
    /// <param name="postData">The post data (needs to be formatted in name=value& format</param>
    private string CreateHttpWebPostRequest(string url, string referer, CookieContainer cookies, NameValueCollection postData)
    {
        var sbPostData = new StringBuilder();

        if (postData != null)
        {
            foreach (string key in postData.AllKeys)
            {
                string[] values = postData.GetValues(key);
                if (values != null)
                {
                    foreach (string value in values)
                    {
                        if (!string.IsNullOrEmpty(value))
                            sbPostData.Append(string.Format("{0}={1}&", HttpUtility.UrlEncode(key), HttpUtility.UrlEncode(value)));
                    }
                }
            }
        }

        var parameterString = Encoding.UTF8.GetBytes(sbPostData.ToString());
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
        request.Method = WebRequestMethods.Http.Post;
        request.CookieContainer = cookies;
        request.ContentLength = parameterString.Length;
        request.ContentType = "application/x-www-form-urlencoded";
        request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.55 Safari/533.4";
        request.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, */*";
        request.Headers.Add("Accept-Encoding: gzip,deflate");
        request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
        request.Headers.Add("Accept-Language: en-us");
        request.Referer = referer;
        request.KeepAlive = true;
        request.AllowAutoRedirect = false;

        using (Stream requestStream = request.GetRequestStream())
        {
            requestStream.Write(parameterString, 0, parameterString.Length);
            requestStream.Close();

            using (var response = request.GetResponse() as HttpWebResponse)
            {
                using (var stIn = new System.IO.StreamReader(response.GetResponseStream()))
                {
                    return stIn.ReadToEnd();
                }
            }
        }
    }  
//
///使用HTTP POST的默认属性创建新的HttpWebRequest
/// 
///要发布到的URL
///推荐人
///此请求中应使用的CookieContainer
///post数据(需要以名称=值和格式进行格式化
私有字符串CreateHttpWebPostRequest(字符串url、字符串引用器、CookieContainer cookies、NameValueCollection postData)
{
var sbPostData=新的StringBuilder();
if(postData!=null)
{
foreach(postData.AllKeys中的字符串键)
{
string[]values=postData.GetValues(键);
如果(值!=null)
{
foreach(值中的字符串值)
{
如果(!string.IsNullOrEmpty(值))