Invoke-WebRequest : '헤더' 매개 변수를 바인딩할 수 없습니다.
powershell에서 curl 명령을 실행하려고 합니다.
curl --user bitcoinipvision --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "move", "params": ["acc-1", "acc-2", 6, 5, "happy birthday!"] }' -H 'content-type: application/json;' http://localhost:18332/
그런데 이런 오류가 발생하는데, 무엇이 문제인가요?
Invoke-WebRequest : '헤더' 매개 변수를 바인딩할 수 없습니다.변환할 수 없습니다.시스템 유형의 "content-type: application/json;" 값입니다.문자열"을 입력합니다."시스템.컬렉션.사전". 라인:1 문자:158... 5, "생일 축하합니다!"] }' -H '콘텐츠 유형: application/json;' http://... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~카테고리정보: 잘못된 인수: (:) [Invoke-WebRequest], 매개 변수 바인딩 예외FullyQualifiedErrorId: 인수 메시지 없음을 변환할 수 없습니다. Microsoft.PowerShell.명령.웹 요청 명령 호출
이미 일부 논평가들에 의해 언급된 바와 같이, 당신은 그것을 볼 것입니다.curl
에 대한 별칭일 뿐입니다.
PS> Get-Command curl
CommandType Name Version Source
----------- ---- ------- ------
Alias curl -> Invoke-WebRequest
참고: 사용하는 명령이 별칭, cmdlet 또는 실행 파일인지 모를 수 있기 때문에 사용하는 것이 좋습니다.
이 시점부터 문제를 해결할 수 있는 두 가지 방법이 있습니다.
PowerShell을 사용합니다(또는 PowerShell < 3, 을 사용하는 경우).
Invoke-RestMethod -Uri http://localhost:18332/ -Credential bitcoinipvision -body $thisCanBeAPowerShellObject
JSON은 IRM의 기본 contentType이므로 content-type이 필요하지 않습니다. 그러나 다음을 사용하여 변경할 수 있습니다.
-ContentType
.현재 환경에서 사용 가능한 경우 원본을 사용합니다. 다음과 같이 입력해야 합니다.
curl.exe --user bitcoinipvision --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "move", "params": ["acc-1", "acc-2", 6, 5, "happy birthday!"] }' -H 'content-type: application/json;' http://localhost:18332/
PowerShell은 기본적으로 JSON 응답을 지원하기 때문에 두 번째 응답보다 첫 번째 응답을 선호합니다. 예를 들어, Piping을 통해 쉽게 사용할 수 있습니다.Where-Object
,Format-Table
,Select-Object
,Measure-Object
그리고 훨씬 더 확실합니다.cUrl을 사용하려면 다음에서 반환하는 String을 구문 분석해야 합니다.curl.exe
프로세스를 직접 수행합니다.이는 이진 콘텐츠에서도 문제가 될 수 있습니다.
Curl은 기본적으로 PowerShell에서 Invoke-Web 요청을 사용합니다.
오류에서 볼 수 있듯이 헤더는 기본적으로 "System" 형식을 사용합니다.컬렉션.ID 사전 n은 "시스템"을 통과하고 있습니다.문자열".
헤더를 사전/해시 테이블로 변환하면 문제가 해결됩니다.
curl --user bitcoinipvision --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "move", "params": ["acc-1", "acc-2", 6, 5, "happy birthday!"] }' -H @{ "content-type" = "application/json"} http://localhost:18332/
이것을 발견하기 전까지 비슷한 문제가 있었습니다. https://github.com/MicrosoftDocs/azure-docs/issues/31851
"명령은 특정 VM 및 Bash 환경에서 실행되도록 설계되었습니다.PowerShell에 없습니다.따라서 대부분의 경우 보이는 오류가 예상됩니다."
언급URL : https://stackoverflow.com/questions/45183355/invoke-webrequest-cannot-bind-parameter-headers
'programing' 카테고리의 다른 글
키워드 "weak"을 클래스 및 클래스 바인딩 프로토콜 유형에만 적용할 수 있는 이유는 무엇입니까? (0) | 2023.08.04 |
---|---|
이름이나 유형에 특정 언어 연결이 있다는 것은 무엇을 의미합니까? (0) | 2023.07.30 |
파이썬 스크립트를 이진 실행 파일로 컴파일하는 방법 (0) | 2023.07.30 |
JavaScript를 사용한 서버 폴링 (0) | 2023.07.30 |
aspx 페이지 뒤에 있는 코드의 변수를 호출하는 방법 (0) | 2023.07.30 |