2014-02-22 2 views
3

여기에있는 노란색 pages.com API 프로그램에 가입했습니다 : https://publisher.yp.com/home. FSharp 유형 공급자를 사용하여 Yellow Pages.com 사용하기

내가 이런 전화를 걸 가서 내가 브라우저에서 JSON을 다시 얻고있다 : http://pubapi.atti.com/search-api/search/devapi/search?term=Jumbo+China+5&searchloc=6108+Falls+Of+Neuse+Rd+27609&format=json&key=ZZZZZZZZ

내가 JSON 결과를 받아 Json2CSharp에 넣어 때, 그것을 잘 렌더링합니다. 나는 시도하고 Provider 형에로드 할 때 :>

유형 RestaurantListingJson = JsonProvider < "http://pubapi.atti.com/search-api/search/devapi/search?term=Jumbo+China+5&searchloc=6108+Falls+Of+Neuse+Rd+27609&format=json&key=ZZZZZZZ"@

을 내가 피들러를 보면 400

을 얻을, 나는 "사용자 에이전트가 필요하지 않은 참조 필드 "

이전에이 문제를 겪은 사람이 있습니까? 유형 공급자에게 사용자 에이전트를 추가하려면 어떻게해야합니까? 사전

답변

1

는 F # 데이터의 최신 버전은 항상 사용자 에이전트를 보내고 헤더를 허용, 그래서 이것은 이제 직접 작동합니다 :

type RestaurantListingJson = JsonProvider<"http://pubapi.atti.com/search-api/search/devapi/search?term=Jumbo+China+5&searchloc=6108+Falls+Of+Neuse+Rd+27609&format=json&key=ZZZZZZZ"> 
4

에서

덕분에 나는 계정을 만들지 않은, 그래서 나는이 시도 할 수 없습니다 -하지만 오류 메시지가 "사용자 에이전트는 필수 필드입니다"라고한다면, 그때는 서비스가 User-Agent를 설정해야합니다 추측 HTTP 요청의 헤더.

이 매개 변수는 JsonProvider의 정적 매개 변수에서 지원되지 않으므로이를 사용하려면 샘플 JSON을 다운로드하고 로컬 파일 (예 : yp.json)에 저장 한 다음 형식을 생성하는 데 사용하는 것이 가장 좋습니다. 제공 :

type Yp = JsonProvider<"yp.json"> 

(당신이 요청을하고자 할 때) 실제로 일부 데이터를 다운로드하려면, 당신은 Http.RequestString을 사용할 수 있습니다 headers 소요 - 거기 당신은 User-Agent을 포함한 모든 필요한 헤더를 지정할 수 있습니다

let response = 
    Http.RequestString("http://httpbin.org/user-agent", headers=["user-agent", "test"]) 

그런 다음 Load 메서드를 직접 사용하여 헤더를 지정할 수없는 URL을 요청하는 대신 Yp.Parse(response)을 사용하여 데이터를로드 할 수 있습니다.

+0

@JamieDixon - 정적 매개 변수로이 추가 관해서는 - 나는 우리가 현실적으로 정적 추가 할 수있을 것 같아요 가능한 모든 액세스 패턴을 지원하는 매개 변수 나는 그것이 표준 URL을 위해 작동해야한다고 생각하지만, 당신이 더 필요할 때, 로컬 파일을 사용하는 것은 알맞은 해결책 (IMO)이다. 또한 열차에서 컴파일해야 할 때 로컬 파일이 더 잘 작동합니다. –

+0

Thomas의 생각에 감사드립니다. TP의 생성자에 추가 할 것이 다른 것 같습니다. 내 생각 엔 우리가 13 세 이상이고 세고 있다고 생각 하나? :-). BTW는 @jamie_dixon입니다. –