2017-03-14 1 views
0

VB에서 API 연결자 클래스를 만들고 있습니다.테스트 API 게시 전달 <Frombody()> 클래스 - 항상 NULL

Public Function Post(<FromBody()> ByVal value As String) As String 
    Return value 
End Function 

내가 HTTP 도구 (파이어 폭스 확장)에서 POST 요청을 보내, 내가 함수에 가서 볼 수 있지만 value은 항상 비어 : 나는 그것에 아주 간단한 기능을 가지고있다. 나뿐만 아니라 피들러 4에서이 시도

RouteTable.Routes.MapHttpRoute(name:="Post", routeTemplate:="post", defaults:=New With {.symbol = RouteParameter.Optional, .controller = "Names"}) 

,하지만 난 얻을 : Application-Start()에서 Global.ASAX.vb에서

config.Routes.MapHttpRoute(
     name:="Names", 
     routeTemplate:="{controller}/{id}", 
     defaults:=New With {.id = RouteParameter.Optional} 

그리고이 :

WebApiConfig.vb이이

{ "메시지": "요청에 엔티티 b가 포함되어 있습니다. ody하지만 Content-Type 헤더가 없습니다. 유추 된 미디어 유형 'application/octet-stream'이이 리소스에 대해 을 지원하지 않습니다. ","ExceptionMessage ":"No MediaTypeFormatter는 미디어 유형이 인 콘텐츠에서 'String'유형의 개체를 읽을 수 있습니다. 'application/"System.Net.HttpContentExtensions.ReadAsAsync [T] (HttpContent 콘텐츠, 형식 형식, IEnumerable ')에서 의 System.Net.Http.UnsupportedMediaTypeException,"StackTrace ":" 1 포매터 IFormatterLogger formatterLogger, CancellationToken cancellationToken) \ R \ n 에서 System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync (HttpRequestMessage 요청 타입 타입 IEnumerable을 '1 포매터 IFormatterLogger formatterLogger, CancellationToken cancellationToken) "}

아니면 내가 헤더의 내용 유형을 설정하려고 할 때 얻을 :

없음 MediaTypeFormatter가 만족에서 '문자열'형식의 개체를 읽을 수 있습니다 미디어 유형 ...

여기서 < ...> 내가 설정 한 미디어 유형입니다.

어떻게이 간단한 POST 작업을 수행합니까?

답변

0

API에 사용하는 프레임 워크가 요청에 설정 한 내용 유형 헤더를 기반으로 POST 요청의 본문 내용을 구문 분석하는 방법을 모르는 것 같습니다.

또한 API controller may not know how to parse plain text입니다.

지원되는 콘텐츠 형식을 수동으로 추가하거나 위 링크의 답변 중 하나에 따라 요청 콘텐츠를 수동으로 읽을 수 있습니다. 또는 컨트롤러를 accept a form post like so으로 변경할 수 있습니다.

+0

아마도이 질문에 대한 답변은 상당히 괜찮습니다. 그러나, 나는 다른 길을 갔다. 그리고 정말로 답을 제공하면서 시간을 재검토하는 시간을 정당화 할 수 없다. 희망을 갖고 다른 사람이 유용하다고 생각하기를 바랍니다. – Jeroen

관련 문제