【问题标题】:How to write CSV file on Remote server?如何在远程服务器上写入 CSV 文件?
【发布时间】:2014-11-29 06:57:36
【问题描述】:

我正在尝试将一些输出写入我服务器上的 .csv 文件。我使用以下代码,但文件中仍然没有输出。 表示什么都没有写。 我的代码在这里

void WriteInRegister(DataRow userdata)
        {
            HttpWebRequest reqHTTP;
            StringBuilder result = new StringBuilder();
            try
            {
                reqHTTP = (HttpWebRequest)HttpWebRequest.Create(new Uri("http://10.10.10.10/config/RequestPlacer.csv"));
                reqHTTP.Credentials = new NetworkCredential("usename", "password");

                if (reqHTTP != null)
                {
                    reqHTTP.ContentType = "application/octet-stream";
                    reqHTTP.Method = WebRequestMethods.File.UploadFile;
                }
                string postdata = (userdata[0].ToString() + ",MacId," + DateTime.Now.ToShortDateString()).ToString();
                byte[] text = Encoding.UTF8.GetBytes(postdata);

                reqHTTP.ContentLength = text.Length;

              /* WebClient wcClient = new WebClient();
                wcClient.Credentials = new NetworkCredential("usename", "password");
                wcClient.UseDefaultCredentials = true;*/
                //wcClient.OpenWrite(new Uri("http://10.10.10.10/config/RequestPlacer.csv"), postdata);


                //  string path = System.Web.HttpContext.Current.Server.MapPath("http://10.10.10.10/config/RequestPlacer.csv");
                   reqHTTP.AllowWriteStreamBuffering = true;
                   Stream writer = reqHTTP.GetRequestStream();
                  /* wcClient.Headers.Add("Content-Type", "application/csv");
                   wcClient.UploadString(new Uri("http://10.10.10.10/config/RequestPlacer.csv"), "POST", postdata);*/


                StreamWriter streamwriter = new StreamWriter(writer);
                streamwriter.WriteLine(postdata);
                streamwriter.Close();
            }
            catch (Exception exe)
            {
                MessageBox.Show(exe.Message);
            }
        }

Exception is("The request was aborted: The request was cancelled.")

【问题讨论】:

  • 您没有对请求调用 GetResponse,因此无法完成。它在哪一行抛出异常?
  • 最后streamwriter.Close();
  • 我也试过 WebClient 但没有结果
  • Exception is("请求被中止:请求被取消。")

标签: c# .net winforms httpwebrequest streamwriter


【解决方案1】:

我认为问题在于您写入流的内容与您在Content-Length 标头中指示的长度不匹配:因为您使用streamwriter.WriteLine,所以您还写了一个不计入的回车+换行在您发送的内容长度中。

例如,如果您的postdata"foo",则Encoding.UTF8.GetBytes(postdata).Length 将返回3,但streamwriter.WriteLine(postdata) 实际上会写入"foo\r\n",即5 个字节。

你只需要使用Write而不是WriteLine(如果你想保留它,或者在内容长度中计算新行)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    相关资源
    最近更新 更多