400 잘못된 요청 (infermedia, 구체적으로)데이터를 검색 : 나는 웹 API에서 R에서 데이터를 가져 오기 위해 노력하고있어
내 경우에는 GET 요청이 처리됩니다 성공적으로 그러나 POST에 문제가 있습니다.
요청에 처리 된 데이터가 포함되어 반환됩니다. 이 두 가지 모두 json 형식입니다. API 문서에서
예제 코드는 다음과 같습니다
curl -v -X GET "https://api.infermedica.com/v2/symptoms"
컬을 사용하여 R이를 실행하기 위해, 내가 사용
h <- new_handle()
handle_setheaders(h, 'app_id' = "id", 'app_key' = "key", 'Accept' = "application/json")
curl_fetch_memory("https://api.infermedica.com/v2/symptoms", handle = h)
이 머리글 만 보내 잘했다. 그러나, POST 본문 복잡한 요청에 대해, 내가 오프 HTTR을 사용하여 더 나은 줄 알았는데, 내가 HTTR을 사용하여 실행 단지 컬
같은 쿼리를 사용하여 본문 데이터를 보낼 수있는 방법을 찾을 수 없습니다 것은 같이 보인다 :
GET(url = "https://api.infermedica.com/v2/symptoms", verbose(),add_headers(app_id = "id", app_key = "key", 'Accept' = "application/json"))
이 또한 작동합니다. 당신이 알 경우
bod <- list(sex = jsonlite::unbox('male'), age = jsonlite::unbox('26'), evidence = data.frame(id = "s_21", choice_id = 'present'))
:
curl -v -X POST -H "Content-Type:application/json" "https://api.infermedica.com/v1/diagnosis" -d '{"sex": "male", "age": 29, "evidence": [ { "id": "s_21", "choice_id": "present" } ] }'
이있는, 나는 이런 내 JSON을 만든 : 그럼 JSON을 포함하는 데이터에 대한 설명서 코드처럼 보이는
POST 요청을 제공 증거 정보가 데이터 프레임으로 생성됩니다. 그 이유는 json으로 변경하면 문서의 json과 매우 흡사합니다.
POST(url = "https://api.infermedica.com/v1/diagnosis", body = bod ,
encode = 'json', verbose(),
add_headers(app_id = "id", app_key = "key", 'Content-Type:' = "application/json"))
이 요청에 대한 자세한 정보는 다음과 같습니다 :
POST/V1/진단 HTTP/1.1
- 호스트 : api.infermedica.com
- 여기 내 말은 무엇 사용자 에이전트 : libcurl/7.47.0 r-curl/1.2 httr/1.2.1
- Accept-Encoding : gzip, deflate
- 수락 : 응용 프로그램/JSON, 텍스트/XML, 응용 프로그램/XML을, /
- 콘텐츠 형식 : 응용 프로그램/JSON
- APP_ID : ID
- app_key : 키
- 콘텐츠 형식 : 응용 프로그램/JSON
- 콘텐츠 길이 : 74
{ "섹스": "남성", "나이": "26", "증거": [{ "ID": "s_21", "choice_id" " present "}]}
HTTP/11 400 잘못된 요청
- 날짜 : 2016년 (화) 9월 20일 그리니치 표준시 13시 26분 46초
- 콘텐츠 형식 : 응용 프로그램/JSON; 문자셋 = UTF-8
- 콘텐츠 길이 : 25
- 연결 : 연결 유지
- X-Content-Type을-옵션 :
- 서버 SAMEORIGIN : Infermedica
- 액세스 제어 - 허용 - 원산지 : *
- X-프레임 - 옵션 NOSNIFF
- 액세스 제어 - 허용 - 자격 : 사실
- 액세스 제어 - 허용 - 방법 : GET, POST, OPTIONS
- 액세스 제어 - 허용 - 헤더 : DNT, X-MX-ReqToken, 연결 유지,
{: - 수정 된 경우 --이후 사용자 에이전트, X-요청-으로는, 캐시 제어, 콘텐츠 유형, APP_ID는 app_key
은 몸의 데이터 라인을 참조 "섹스": "남성", "나이": "26", "증거": [{ ""id ":"s_21 ","choice_id ":"현재 "}]}
정확하게 api가 어떻게 표시해야하는지 지시합니다.
하지만 잘못된 요청 오류가 발생합니다. 본문에 중첩 목록을 사용하려고 시도했지만 아무런 효과가 없었습니다. 문서 페이지에서 json 문자열을 복사하여 붙여 넣기하여 그대로 전달하면 동일한 오류가 발생합니다. 내가 어떤 도움을 크게
귀하의 문제 : '나이 = jsonlite :: 언 박스 ('26 ')'당신은을 전달하는 API가 숫자를 기다리는 문자열 (c url json에는 따옴표가 붙지 않았다 26). 26 주위에 따옴표를 제거하고 당신은 괜찮을 것입니다. – Tensibai
@Tensibai 나는 또한 그것을 시도하고 불행히도, 그것은 여전히 내게 같은 오류를 던졌습니다 – rangeelo
당신은 두 번도 콘텐츠 형식 헤더가 있습니다. add_header 통화에서 제거 해보십시오. – Tensibai