我一直在尝试构建一个简单的HTTP请求,以JSON格式将所有流程数据发布到使用PowerShell 2.0的服务器,我需要使用它。不幸的是,每当我在Windows 7操作系统上执行脚本时,我都注意到 JSON有效负载被切断(非常令人沮丧)。请求正文中的实际有效负载非常大,大约 74,100字节。注意此请求在Windows Server 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
是字符串验证令牌。 / p>
我目前正在将$endpoint
指向名为Request Bin的服务,该服务非常简单地以漂亮,可读的格式详细说明HTTP请求信息。所以,我知道我的服务器无法导致有效负载分裂。
另外,我已经阅读了有关C#和PowerShell的各种帖子,他们都提到这应该与不关闭流有关。但是,正如您在代码中看到的那样,我非常清楚地执行$requestStream.Close()
,我的研究应该能够成功刷新请求流。
有谁知道为什么输出流不会处理所有JSON序列化信息?
答案 0 :(得分:0)
哎呀,我刚才意识到我正在使用的Request Bin服务(实际上)限制了请求体!