2012-10-11 1 views
0

ColdFusion에서 Rest API를 사용하려고하는데이 오류가 발생했습니다. 400 잘못된 요청 : 코드와 오류가문제 ColdFusion에서 Rest API 사용하기

<cfset theURL = "https://api.dev.net/rest/test/encrypt/124123"> 
<cfhttp url="#theURL#" result="value" method="get" username="XXX" password="XXX"> 
<cfhttpparam type="header" name="Accept" value="application/xml"> 
<cfhttpparam type="header" name="Content-Type" value="application/xml"> 
</cfhttp> 

오류 이하입니다. 콘텐츠 유형이 지정되지 않았습니다.

이 문제에 대한 도움은 정말 감사하겠습니다.

+2

오류 메시지는 명백합니다. 콘텐츠 형식이 예상되었지만 수신되지 않았기 때문에 요청이 잘못되었습니다. 분명히 실제 API URL을 제공하지 않았으므로 다른 유형의 속성이 필요하거나 하이픈을 공백으로 바꾸거나 바꿀 필요가있는 것처럼 예상되는 항목을 추측하는 것 외에 다른 작업을 수행 할 수 없습니다. 이 서비스가 무엇인지에 대한 문서는 거의 확실하게이 정보를 포함하는 예제를 제공합니다 ... –

+0

콘텐츠 유형이 올바르게 구성되어있는 것처럼 보입니다. 그러나이 예에서는 실제로 XML을 본문에 보내지 않습니다. 의뢰. 즉, 사용자가 있어야하는 콘텐츠를 보내지 않거나 콘텐츠 유형이 의심스러운 것입니다. Peter가 말한 것처럼, 실제 API URL이나 가지고있는 문서에 대한 링크를 게시 할 가치가 있습니다. – barnyr

답변

0

<cfhttpparam>은 요청의 콘텐츠 유형을 'text/xml'로 설정하는 유형 (type = "XML")으로 XML을 허용 할 수 있습니다. 이 경우 value 속성은 xml 요청의 본문을 포함해야합니다. 그래서 시도해보십시오

<cfhttpparam type="XML" value="#your_XML_string#"> 

그리고 이것이 작동하는지 확인하십시오.

0

첫 번째 문제는 메서드를 "가져 오기"로 설정한다는 것입니다. 이 파일을 검색하는 데 사용됩니다. resftul 서비스를 사용하는 경우 서비스에 "게시"하십시오.

다음 문제는 SSL 서비스이므로 SSL 인증서를 신뢰할 수있는 키 저장소에 설치해야한다는 것입니다. (Google this).

다음 호에 나오는 문제는 서비스가 응답을 '압축'하는 부분입니다. cfhttp 압축에 대해 Google이 발생하면 답변을 얻을 수 있습니다.

+1

리소스를 검색하는 경우 가져옵니다. POST는 자원을 작성하고 PUT을 사용하여 해당 자원을 갱신하는 데 사용됩니다. 대상 서비스가 신뢰할 수있는 기관 (Thawte, Verisign 등)이 서명 한 인증서를 사용할 수 있으므로 반드시 SSL 인증서를 설치하지 않아도됩니다. 오류 메시지는 아마도 연결 상태가 양호 함을 나타냅니다. 압축시, 서버가 Accept-Encoding 헤더를 올바르게 준수한다면 ok 일 수 있습니다. 이를 테스트하려면 Fiddler를 설치 및 실행하고 cfhttp에서 proxyx 및 proxyport 속성을 사용하여 트래픽을 모니터링하십시오. – barnyr

+0

일반 http 용어에는 정확하지만 CFHTTP 게시 방법은 method = "post"가있는 양식을 사용하는 것과 같습니다. Restful 서비스는 get 메소드를 사용하고 url 변수를 추가하지 않는 한 post 메소드를 사용합니다. SSL에 관해서는 SSL 인증서가 설치되어 있지 않으면 CF 서버가 SSL을 처리하지 못하는 문제가 있습니다. CF 서버로 얼마나 많은 SSL 작업을했는지 확신 할 수 없습니다. Adobe는 CF와 함께 사용할 SSL 인증서를 설치하는 방법에 대한 지침을 제공합니다. 네가 더 잘 알고있을거야. – awjr