2016-12-08 2 views
1

저는 업로드 미디어를 지원하기 위해 Ross-Gill의 Twitter API for REBOL2을 업데이트하려고했습니다. 그 소스, REBOL 요리 책, codeconscious 사이트, 그리고 여기에 다른 질문을보고, 내 이해는 read/custom가 웹 사이트에 POST 데이터에 선호하는 방법입니다.Rebol2의 읽기/사용자 정의에 대한 문서는 무엇입니까?

그러나 read/custom에 대한 실제 설명서를 찾을 수 없었습니다. 예 : multipart/form-data을 보내는 것을 지원합니까? (나는 각 부분을 수동으로 작성하여이 문제를 해결할 수 있었지만, 트위터의 끝에있는 모든 이미지 파일에 대해 작동하지 않는 것 같으며 약간의 해킹입니다.) read/customHTTP/1.0 200 OK 응답의 텍스트 만 반환합니까? (그렇게 보입니다. 이것은 HTTP/1.0 202 Accepted을 받고 결과 데이터를 읽을 때 문제가됩니다.) 이 to-string을 사용하여 데이터를 변환하지 않고 이진 데이터를 올바르게 전송하지 않는 이유가 있습니까?

TL : DR : REBOL2의 read/custom 어딘가에 관한 좋은 설명서가 있습니까? 또는 read/custom은 기본 포트 인 POST만을 의미하며 포트를 사용하고 HTTP 응답을 수동으로 처리해야합니까?

답변

0

당신은 짐작할 수 있듯이 read/custom은 웹 양식 데이터 만 처리하는 간단한 HTTP 게시물 (이진 데이터로 인해 실패하는 이유)을 의미합니다. 그것에 대한 공식 문서가 없습니다. 이

probe system/schemes/HTTP 

당신이 /custom 정제가 postheader (사용자 정의 HTTP 헤더를 설정하는) 두 개의 키워드를 지원하는 것을 알 수 있습니다 :하지만 당신이 HTTP 구현의 소스 코드에 액세스 할 수 있습니다으로 문제가되지 않습니다. 또한 두 키워드를 모두 사용하더라도 Content-Type은 무엇이든 관계없이 application/x-www-form-urlencoded으로 강제 전송됩니다 (이는 제공된 mime 유형이 잘못되어 서버에서 바이너리 데이터가 거부되는 이유 일 수 있음).

이 문제를 해결하려면 HTTP 개체를 저장하고 필요에 맞게 구현을 수정 한 다음 다시로드하면됩니다.

저장 :

save %http-scheme.r system/schemes/HTTP 

다시로드 : 그냥 HTTP 코드에 하드 코딩 Content-Type 설정을 사용하지 않도록 설정 한 다음 header 키워드를 사용하여 자신의 경로를 제공하는 경우

system/schemes/HTTP: do load %http-scheme.r 

, 그것은 작동합니다 이진 데이터에서도 괜찮아요.

read/custom <url> [header [Content-Type: <...>] post <data>] 

희망 사항 그의 도움.

+0

HTTP 개체를 수정하는 것이 내가 필요한 것입니다. 감사합니다. 나는 바이너리 데이터가 잘못 변환되도록하는 변환이 있는지 살펴보고 (처음에는 to-string으로 변환하지 않는 한 실제 바이트의 두 배를 취하고있다) 참조해야 할 것이다. – Tectorum

+0

이것은 명시 적 또는보다 암시적인 'form' 호출처럼 보이며 데이터를 문자열로 변환합니다. 당신이 그것을 찾을 수 없다면, 나에게 알려줘, 나는 그것을 빨리 보일 것이다. – DocKimbel