Powershell을 사용하여 내 작업을 내 Vitalist.com 계정에 게시하고 싶습니다. Vitalist API 설명서는 here입니다.
Powershell에서 HttpWebResponse를 시도했지만 뭔가 빠졌습니다. 모든 포인터는 감사하겠습니다.Powershell을 통해 Vitalist.com의 API에 POST하는 방법은 무엇입니까?
감사합니다.
Powershell을 사용하여 내 작업을 내 Vitalist.com 계정에 게시하고 싶습니다. Vitalist API 설명서는 here입니다.
Powershell에서 HttpWebResponse를 시도했지만 뭔가 빠졌습니다. 모든 포인터는 감사하겠습니다.Powershell을 통해 Vitalist.com의 API에 POST하는 방법은 무엇입니까?
감사합니다.
내가 비탈에 대해 아무것도 모르지만, HTTP의 POST를 실행하기 위해이 기능을 사용할 수 있습니다 : 당신은 어떤 데이터를 전달하면
function Execute-HttpPost
{
param(
[string] $url = $null,
[string] $data = $null,
[System.Net.NetworkCredential]$credentials = $null,
[string] $contentType = "application/x-www-form-urlencoded",
[string] $codePageName = "UTF-8",
[string] $userAgent = $null
);
if ($url -and $data)
{
[System.Net.WebRequest]$webRequest = [System.Net.WebRequest]::Create($url);
$webRequest.ServicePoint.Expect100Continue = $false;
if ($credentials)
{
$webRequest.Credentials = $credentials;
$webRequest.PreAuthenticate = $true;
}
$webRequest.ContentType = $contentType;
$webRequest.Method = "POST";
if ($userAgent)
{
$webRequest.UserAgent = $userAgent;
}
$enc = [System.Text.Encoding]::GetEncoding($codePageName);
[byte[]]$bytes = $enc.GetBytes($data);
$webRequest.ContentLength = $bytes.Length;
[System.IO.Stream]$reqStream = $webRequest.GetRequestStream();
$reqStream.Write($bytes, 0, $bytes.Length);
$reqStream.Flush();
$resp = $webRequest.GetResponse();
$rs = $resp.GetResponseStream();
[System.IO.StreamReader]$sr = New-Object System.IO.StreamReader -argumentList $rs;
$sr.ReadToEnd();
}
}
이처럼 그들을를 urlencode : 그냥
add-type -AssemblyName System.Web
[system.Web.Httputility]::UrlEncode($data)
추측 - 어쩌면 이런 식으로 작동 할 수 있습니까?
$d = [system.Web.Httputility]::UrlEncode("<request><actions><action><body>some body</body></action></actions></request>")
Execute-HttpPost -url 'http://www.vitalist.com/services/api/actions.xml' -data $d -credentials (Get-Credential)
stej. 도움을 주셔서 감사하지만 그것을 작동시킬 수 없습니다. 이 오류가 발생합니다 : "0"인수가있는 "GetResponse"예외 호출 : "원격 서버에서 오류를 반환했습니다 : (401) 권한이 없습니다." 하지만 나는 그것이 정확한 신임장을주고 있다고 알고있다. 기묘한. – GollyJer
stej의 훌륭한 대답으로이 질문에 대한보다 일반적인 버전을보고 싶습니다. –