为System.Net.HttpWebRequest Stream

时间:2016-01-05 08:01:59

标签: json powershell windows-7 powershell-v2.0

我一直在尝试构建一个简单的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序列化信息?

1 个答案:

答案 0 :(得分:0)

哎呀,我刚才意识到我正在使用的Request Bin服务(实际上)限制了请求体!