控制台应用程序只发送POST请求中的前46个字符
问题描述:
我正在构建一个控制台应用程序,收集一些数据,然后通过POST请求将其发送到php页面。这是我的C#代码:控制台应用程序只发送POST请求中的前46个字符
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("http://localhost/log.php");
Request.Method = "POST";
Request.ContentType = "application/x-www-form-urlencoded";
string PostData = "data=" + UserOutput;
Request.ContentLength = PostData.Length;
StreamWriter stOut = new StreamWriter(Request.GetRequestStream(), System.Text.Encoding.ASCII);
stOut.Write(PostData);
stOut.Close();
而PHP页面(log.php):
<?php
file_put_contents('log.txt', $_POST['data']);
?>
注意我只使用file_put_contents
测试如果一切正常OK,这不是我想要的结束了。
要发送的发布数据的长度超过2000个字符,并且正确的内容长度由Request.ContentLength = PostData.Length;
返回,所以这不是问题。但是每当我尝试这个时,它只会发送POST数据的前46个字符。
我不得不承认,在这一点上,我复制了大部分代码,因为我在C#中不是很有经验。
任何帮助将是伟大的,谢谢。
答
Close()
应该处理它,但您可能想在此之前尝试.Flush()
。
答
如果您只发送一大块数据,那么省略Content-type
标题并制作PostData == UserOutput
会是一个更好的策略。
你可以接着用
$s = fopen("php://input", "r");
file_put_contents('log.txt', $s);
啊哈保存它,我从来没有真正想过。这是问题,我将确保从现在开始UrlEncode。谢谢 :) – Kratz 2010-08-16 18:57:16