我正在尝试在PowerShell中实现ReST请求。
要求1:
$response = Invoke-RestMethod "my-custom-url" -Headers $headers -Method POST -Body $json -ContentType "application/json" -OutFile output.json -SessionVariable sv
对请求1的回应:
{
"@type": "user",
"id": "00000703000000000010",
"orgId": "000007",
"name": "[email protected]",
}
我需要保存“ id”的值并将其添加到下一个请求的标头中。我该如何实现?
----更新-添加WriteHost $ response
@{@type=user; id=00000703000000000010; orgId=000007; name=xxx; createTime=2014-08-27T12:12:21.000Z; updateTime=2016-02-27
T00:40:13.000Z; [email protected]; updatedBy=xxx; sfUsername=ppanigrahi; firstName=Pravakar; lastName=P
anigrahi; password=********; phone=9008433201; [email protected]; timezone=IST; serverUrl=http://localhost:16006/saas; spiUrl
=https://localhost:8080/; icSessionId=QpXZEkqYEflJRY7h; securityQuestion=MOTHER_MAIDEN_NAME; forceChangePassword=False; uuid=C1bL60uIQqyRaF3
nXCHFkA; roles=System.Object[]; usergroups=System.Object[]}
由于您使用的是Invoke-RestMethod,因此响应将是一个包含数据属性的对象,您可以从$ Response.id访问ID。
我不确定您是否要尝试将“ Id”作为标头值或cookie传递(因为您还指的是会话变量;通常在其中保存的位置,例如cookie等)。
如果您只想传递包含字段“ Id”的自定义标题,则可以在下一个请求之前执行以下操作:
$headers.Add("Id",$response.id);
我假设您已经在此处预先定义了$ header。否则,您可以使用$ headers = @ {“ Id” = $ response.id};直接创建它。
然后在下一个服务调用中,只需像已经做好的那样重用$ headers变量即可。
如果您真正想要实现的是创建一个cookie并将其添加到会话中(变量),那么您不必在以后的每次调用中都重复自己的操作;您应该创建一个cookie并按照以下步骤添加它:
$c=New-Object System.Net.Cookie;
$c.Name="Id";
$c.Path="/"
$c.Value = $response.Id;
# Make sure domain and path is matching your backend-server
$c.Domain = "foobar.com";
# Add cookie to your websession
$sv.Cookies.Add($c);
这将创建一个cookie并将其添加到您的网络会话中(如果$ sv在您的会话中)。如果没有webrequest会话(在您的情况下为$ sv),则可以使用$ sv = New-Object Microsoft.PowerShell.Commands.WebRequestSession;预先创建此会话。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句