0

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": "xxx@gmail.com",
 }

「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; createdBy=xxx@gmail.com; updatedBy=xxx; sfUsername=ppanigrahi; firstName=Pravakar; lastName=P
anigrahi; password=********; phone=9008433201; emails=xxx@gmail.com; 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[]}
4

2 に答える 2

1

Invoke-RestMethod を使用しているため、応答はデータを含むプロパティを含むオブジェクトになり、$Response.id から ID にアクセスできます。

「Id」をヘッダー値として渡すか、Cookie として渡すかはわかりません (セッション変数も参照しているため、通常は Cookie などを保持する場所)。

フィールド「Id」を含むカスタムヘッダーを渡すことだけが必要な場合は、次のリクエストの前に次のことを実行できます。

$headers.Add("Id",$response.id);

ここで事前に $headers を定義していると仮定しています。それ以外の場合は、$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 が作成され、Web セッションに追加されます (セッションに $sv がある場合)。Webrequest セッション (この場合は $sv) がない場合は、 $sv = New-Object Microsoft.PowerShell.Commands.WebRequestSession; を使用して事前にこれを作成できます。

于 2016-03-02T07:20:09.260 に答える
0

$response.idPowershell は自動的に json 応答を PSCustomObject に変換するため、必要な値が含まれている必要があります。その後、適切なヘッダー名で新しいハッシュテーブルを作成するか、$headers変数にその値を追加できるはずです。$headers.Add("HeaderName",$response.id)$request2Headers = @{ "HeaderName" = $response.id }

于 2016-03-02T07:15:39.510 に答える