2016-12-09 1 views
0

로컬 서버에서 실행중인 Overpass API에 대한 쿼리를 수행하고 있습니다.C# (RestSharp)에서 C# (urllib)이 아닌 Overpass API에서 400

/api/interpreter?[out:json];way(around:1000,-33.933,18.4347)[amenity][name];(._;>;);out; 

그리고 내가 파이썬을 사용하여 동일한 호출을 수행합니다 (400)

을 반환 그리고 내가 "편의 시설"을 가지고 있고 (즉, 모든 방법을 기대 반환 : 전 C#에서 다음 쿼리를하고 있어요 "이름"태그, 모든 관련 노드 포함).

C# (RestSharp 라이브러리 사용)에서 호출을 수행하면 API가 ">"대신 ecape 문자 "% 3E"을 볼 수 있지만 ">"는 ">"를 볼 수 있습니다. 호출은 파이썬에서 수행됩니다. 여기에 아파치 로그에 기록 된 두 통화는 다음과 같습니다

"GET /api/interpreter?[out:json];way(around:1000,-33.933,18.4347)[amenity][name];(._;>;);out; HTTP/1.1" 200 20878 "-" "Python-urllib/3.5" 
"GET /api/interpreter?[out:json];way(around:1000,-33.933,18.4347)[amenity][name];(._;%3E;);out; HTTP/1.1" 400 987 "-" "RestSharp/105.2.3.0" 

당신이 전화는 문자를 제외하고는 동일하다 볼 수 있듯이. 아마도 문제는이 문자로 인해 발생했을 것입니다. 그러나 성공하는이 문자를 사용하는 호출의 다른 예가 있습니다.

GET /api/interpreter?data=[bbox][out:json];way[highway=primary];(._;%3E;);out;&bbox=27.8539696457985,-33.0194661675922,27.9045061954916,-33.0053817324078 HTTP/1.1" 200 6037 "-" "RestSharp/105.2.3.0" 

여기에 무슨 일이 일어나고 있습니까? 캐릭터가 400을 일으키는가 아니면 다른 것입니까?

+0

"캐릭터가 400을 일으키고 있습니까? 아니면 다른 것입니까?" 이 문자를 수정하면 그것을 볼 수 있습니다. – scai

답변

1

귀하의 첫 번째 예에서는 검색어와 함께 필요한 data= 매개 변수를 잊어 버렸습니다. 당신이 이미 그것을 짐작 - -이 매개 변수는 HTML과 같은 다음과 같은 오류 텍스트를 얻을없이

http://overpass-api.de//api/interpreter?data=[out:json];way(around:1000,-33.933,18.4347)[amenity][name];(._;%3E;);out;

및 HTTP 400 반환 코드를 : 여기에 공공 예를 들어 작동 수정 된 URL입니다

Error: line 1: parse error: Unknown type "%"

Error: line 1: parse error: An empty query is not allowed

Error: line 1: parse error: ';' or ')' expected - '3' found.

+0

그건 속임수 였어. 왜 파이썬 urllib에서 호출이 작동하는지 설명하지 못하겠습니까? – mchristos

관련 문제