我一直试图构建一个简单的HTTP,将所有JSON2.0格式的进程数据发布到PowerShell 2.0服务器上,出于必要,我需要使用该请求。不幸的是,每次我在Windows7OS上执行我的脚本时,我都会注意到-- JSON负载--被切断了(非常令人沮丧)。在请求正文中,实际有效负载在74,100字节附近非常大。请注意,此请求在Windows 2012计算机上成功地工作也可能是有用的,尽管我怀疑该特定操作系统的有效负载请求大小较小。
以下是代码:
$request = [System.Net.HttpWebRequest]::Create($endpoint);
$request.ContentType = 'application/json';
$request.Method = 'POST';
$request.Headers.Add('Authorization', "Token " + $authToken);
$seconds = 1000;
$request.Timeout=3*$seconds;
$stringContentBytes = [System.Text.Encoding]::UTF8.GetBytes($stringContent);
$request.ContentLength = $stringContentBytes;
$requestStream = $request.GetRequestStream();
$requestStream.Write($requestContentBytes, 0, $requestContentBytes.length);
$requestStream.Close();
$response = $request.GetResponse();在本例中,$endpoint表示目标服务器端点,$stringContent表示需要通过线路发送的JSON序列化有效负载,authToken是字符串验证令牌。
目前,我将$endpoint指向一个名为Request的服务,它非常简单地以一种漂亮、可读的格式详细说明了HTTP信息。所以,我知道我的服务器不会导致负载分裂。
此外,我已经阅读了许多关于C#和PowerShell的文章,他们都提到这应该与不关闭流有关。但是,正如您在代码中看到的那样,我非常清楚地执行了$requestStream.Close(),根据我的研究,它应该能够成功地刷新请求流。
有人知道为什么输出流不会处理所有的JSON序列化信息吗?
发布于 2016-01-05 18:35:19
哇,我刚刚意识到我正在使用的Request服务(实际上)限制了请求体!
https://stackoverflow.com/questions/34606773
复制相似问题