2016-08-23 17 views
1

안녕하세요, 저는 API를 호출하고 winhttp 요청과 GET 메서드를 사용하고 있습니다. send 메서드에서 json 스타일 매개 변수를 전달하지만 받아 들일 수 없습니다. 결국 오류 메시지가 나타납니다.VBA RESTful API GET 메서드 문제

{ "code": "INS03", "설명": "이벤트 ID 필요", "requestId": "_ 181603230829162847306080", "data": {}, "validationErrors": 나는 실제로 이벤트 ID 매개 변수를 전달하고 있기 때문에 다음과 같이 이상한 것 같다 널 (null)}

:

inventory_URL = "https://api.stubhub.com/search/inventory/v1" 

    Dim oRequest As WinHttp.WinHttpRequest 
    Dim sResult As String 

    Set oRequest = New WinHttp.WinHttpRequest 
    With oRequest 
     .Open "GET", inventory_URL, True 
     .setRequestHeader "Authorization", "Bearer " & access_token 
     .setRequestHeader "Accept", "application/json" 
     .setRequestHeader "Accept-Encoding", "application/json" 
     .send ("{""eventid"":""9445148""}") 
     .waitForResponse 
     sResult = .responseText 
     Debug.Print sResult 
     sResult = oRequest.Status 
     Debug.Print sResult 
    End With 

내 코드에 어떤 문제가 있습니까?

가 구성되어야한다 GET 요청 쿼리 문자열의 경우, 사전에

바딤

+0

나는 아무것도 바꾸지 않을 것이라고 생각하지만'.send ("{" "eventid" ": 9445148}")'주변의 괄호는 제거해야합니다. [이것은 혼란 스럽습니다. 왜 항상 괄호를 사용하지 않는거야?] (http://stackoverflow.com/documentation/vba/1179/procedure-calls/3818/this-is-confusing-why-not-just-always-use-parentheses#t = 201608231909481978335) Docs.SO에 대한 정보를 제공합니다. 이유가 궁극적으로 뒷걸음질 치기 쉬운 이유입니다. –

+0

'.send "시도해 보셨나요? 9445148"'? API 설명서에서 URL이 예상하는 내용은 무엇입니까? –

+0

나는 괄호에 동의한다. 순수한 .send "944518"이 효과가 있을지 모르지만, 정확히하지는 못했지만 바로 맨 위에있는 inventory_URL 문자열에 매개 변수를 직접 삽입하여 문제를 발견했다. 이 API는 안심할 수있는 호출을 지원한다고 생각합니다. 가능하다면 .send "...."는 다른 각도에서와 같은 기술입니다. 정말 고마워하는 팁 덕택에 괄호 버릇에 좀 더주의를 기울 이겠습니다! –

답변

1

을 주셔서 감사합니다. 귀하의 데이터는 Send에 있지만 쿼리 문자열에 전달 될 수 없습니다 :

.Open "GET", inventory_URL & "?eventid=9445148", True

확인 GET vs POST합니다.

+0

그게 잘 작동 했어, 그게 핵심 문제라고 생각해. 나는 무언가를 보내야한다고 생각하고 있었어.하지만 이제는 URL 문자열에 모두 들어갈 필요가 없다는 걸 알았어. 고마워. –

+0

예. 그게 문제 였어. 나는 그것이 도움이 되었기 때문에 기쁩니다! – dee