Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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
你知道为什么发送http请求的ASP.NET C#代码不起作用吗?_C#_Asp.net_Http_Post_Request - Fatal编程技术网

你知道为什么发送http请求的ASP.NET C#代码不起作用吗?

你知道为什么发送http请求的ASP.NET C#代码不起作用吗?,c#,asp.net,http,post,request,C#,Asp.net,Http,Post,Request,代码如下,当我点击页面时: 它只是挂在加载杆上,永远缓慢地移动,直到我停下来,我忘记做什么了吗?我不知道哪一行代码是用来“提交”请求的 注意:用户名/密码和[公司名称]是用于共享代码的占位符,并在我的运行代码中包含正确的值 using System; using System.Web; using System.Xml; using System.Net; using System.IO; public class bctimepost : IHttpHandler { publi

代码如下,当我点击页面时:

它只是挂在加载杆上,永远缓慢地移动,直到我停下来,我忘记做什么了吗?我不知道哪一行代码是用来“提交”请求的

注意:用户名/密码和[公司名称]是用于共享代码的占位符,并在我的运行代码中包含正确的值

using System;
using System.Web;
using System.Xml;
using System.Net;
using System.IO;

public class bctimepost : IHttpHandler {

    public void ProcessRequest(HttpContext context)
    {

        string project_id = context.Request.QueryString["project"];
        string person_id = context.Request.QueryString["person"];
        string post_date = context.Request.QueryString["date"];
        string post_hours = context.Request.QueryString["hours"];
        string case_num = context.Request.QueryString["case"];

        HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create("https://[company name].updatelog.com/projects/" + project_id + "/time_entries.xml");

        objRequest.Method = "POST";
        objRequest.ContentType = "application/xml";
        objRequest.Accept = "application/xml";

        string creds = "username:password";
        byte[] encData_byte = new byte[creds.Length];
        encData_byte = System.Text.Encoding.UTF8.GetBytes(creds);
        string encodedData = Convert.ToBase64String(encData_byte);

        objRequest.Headers.Add("Authorization", "Basic " + encodedData);

        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Indent = true;
        settings.IndentChars = ("    ");

        using (XmlWriter writer = XmlWriter.Create(objRequest.GetRequestStream(), settings))
        {
            writer.WriteStartElement("time-entry");
            writer.WriteElementString("person-id", person_id);
            writer.WriteElementString("date", post_date);
            writer.WriteElementString("hours", post_hours);
            writer.WriteElementString("description", "Worked on Case #" + case_num);
            writer.WriteEndElement();
        }

        HttpWebResponse myHttpWebResponse = (HttpWebResponse)objRequest.GetResponse();

        context.Response.Write(myHttpWebResponse.StatusCode);

    }




    public bool IsReusable {
        get {
            return false;
        }
    }

}

我认为XmlWriter不会自动关闭GetRequestStream()返回的流。加:


在创建XmlWriter之前,看看这是否有帮助。

我认为XmlWriter不会自动关闭GetRequestStream()返回的流。加:


在创建XmlWriter之前,看看这是否有帮助。

作为旁注,您应该能够替换以下内容:

string creds = "username:password";
byte[] encData_byte = new byte[creds.Length];
encData_byte = System.Text.Encoding.UTF8.GetBytes(creds);
string encodedData = Convert.ToBase64String(encData_byte);

objRequest.Headers.Add("Authorization", "Basic " + encodedData);
与:


作为补充说明,您应该能够替换以下内容:

string creds = "username:password";
byte[] encData_byte = new byte[creds.Length];
encData_byte = System.Text.Encoding.UTF8.GetBytes(creds);
string encodedData = Convert.ToBase64String(encData_byte);

objRequest.Headers.Add("Authorization", "Basic " + encodedData);
与:


是的,在你写完信后要冲水。是的,但是如果你不关闭它,冲水对你没有多大帮助。是的,在你写完信后要冲水。是的,但是如果你不关闭它,冲水对你没有多大帮助。
objRequest.Credentials = new NetworkCredential("username", "password");