我正在尝试通过C#WebRequest
将base64编码数据发送到php脚本。然后我收到file_get_contents("php://input")
发送的数据,当数据长度低于8 KB时,执行php代码,否则无法执行。另一方面,php没有收到请求。
代码C#:
WebRequest request = WebRequest.Create(url);
request.Method = "POST";
// postData is Base64_encoded
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseData = reader.ReadToEnd();
responseData = SecurityUtils.DecryptUrlData(responseData);
reader.Close();
dataStream.Close();
response.Close();
return responseData;
有人可以帮忙吗?
答案 0 :(得分:0)
以下是不正确的(mea culpa)。你不能在php:// input中使用enctype = multipart / form-data。 See here
也许您也可以将PHP代码发布到您的问题中?
确保从c#app发布到PHP应用程序时,将enctype设置为multipart / form-data。
<强> Explanaition 强>
您使用的是application / x-www-form-urlencoded还是multipart / form-data?这里有一个很好的解释:application/x-www-form-urlencoded or multipart/form-data?
根据上面的链接,以application / x-form-urlencoded格式发布数据会将正文放入URL中。当URL大于8K时,许多服务器和语言(PHP,Apache)将切断或抛出错误。请参阅问题:What is the maximum length for a URL?
答案 1 :(得分:0)
更改请求的内容类型
request.ContentType =“text / plain”;
查看服务器端的php.ini post_max_size