2017-12-21 5 views
1

POST를 통해 일부 데이터를 웹 API에 보내려고하지만 데이터가 항상 null로 읽혀집니다.웹 API가 POST에서 내 유형을 읽지 않습니다.

나는 폼 데이터

Content-Type: application/x-www-form-urlencoded 

그것은 내 다른 프로젝트에서 일하고 있지만 여기, 아주 이상한로 보낸다.

내 유형은 다음과 같이이다 :

public class QueryResult 
{ 
    public List<string> Headers; 
    public List<QueryResultLine> Results; 
} 

내 요청이 같다 :이 요청 queryResult.Headers을하고 queryResult.Results가 null 때마다

[Route("export/excel")] 
public HttpResponseMessage PostExportToExcel(QueryResult queryResult) 
{ 
    DoSomething(queryResult); 
} 

.

헤더 = % 5B % 22Nummer % 22 % 2C % 22Omschrijving의 % 22 % 2C % 22Locatie % 22 % 2C % 22Beheerder % 22 % 2C % 22Niveau % 22 % 2C % 22ArtikelNummer의 % 22 % 2C % 22Naam의 22 % % 2C % 22InHoudL % 22 % 2C % 22InHoudKG % 22 % 2C % 22 % 22C % 22Opslag % 22 % 2C % 22Seveso % 22 % 2C % 22CLP % 22 % 2C % 22Uitvoering % 22 % 2C % 22Voorziening % 22 % 2C % 22HPZinnen % 22 % 5D & 결과 = % 5B % 7B % 22Nummer % 22 % 3A % 22DECO.1 % 22 % 2C % 22Omschriving % 22 % 3A % 22Testvat % 22 % 2C % 22 지방 % 22 % 3A % 22Testvat + chem % 22 % 2C % 22Beheerder % 22 % 3A % 22SIDCCEO % 22 % 2C % 22Niveau % 22 % 3A0 % 2C % 22ArtikelNummer % 22 % 3A % 22AM00632548 % 22 % 2C % 22Naam % 22 % 3A % 22Tetrahydrothiophene + - + Scentinel ++ T + 가스 + 악취제 % 22 % 2C % 22 % 22 % 22 % 3A150 % 2C % 22InHoudKG % 22 % 3A150 % 2C % 22 % 22 % 3A % 22 % 22 % 2C % 22Opslag % 22 % 3Afalse % 2C % 22Seveso % 22 % 3A % 22P5c % 22 % 2C % 22CLP % 22 % 3Anull % 2C % 22Utowering % 22 % 3A % 22 % 22 % 2C % 22 % 22 % 3A % 22 % 22 % 2C % 22HPZinnen % 22 % 3A % 22H312 % 2C + H315 % 2C + H332 % 2C + P280 % 2C + H502 % 2C + H225 % 2C + H319 % 2C + H412 % 2C + P210 % 2C + P233 % 2C + P240 % 2C + P241 % 2C + P242 % 2C + P243 % 2C + P264 % 2C + P270 % 2C + P301 % 2B310 % 2C + P303 % 2B361 % 2B353 % 2C + P330 % 2C + P331 % 2C + P370 % 2B378 % 2C + P403 % 2B235 % 2C + P405 % 22 % 2C % 22 % 24 % 24hashKey의 % 22 % 3A %의 22object % 3A210 % 22 % 7D %의 I이 요구 queryResult.Headers 할 때마다 5D

답변

2

및 queryResult.Results는

HeadersResults는 그들이 필드가 아닌 속성으로 선언되어 있기 때문에 바인딩 모델 중에 바인딩되지 않습니다 null입니다. 기본 모델 바인더는 속성 만 바인딩합니다. 자세한 내용은 this article을 확인하십시오.

그래서 당신은에 QueryResult의 정의를 조정해야합니다 :

당신이 Headers 속성이

[ "Nummer"하나 문자열 목록으로 직렬화됩니다 제공 쿼리 몸에
public class QueryResult 
{ 
    public List<string> Headers { get; set; } 

    public List<QueryResultLine> Results { get; set; } 
} 

"Nim", "Naam", "InhoudL", "InhoudK", "Voorkomen", "Opslag", "Seveso", "CLP", "Opschrijving", "Lochesie" Uitvoering ","Voorziening ","HPZinnen "]

나는 이것이 당신이 기대하는 바가 아니며 목록에 별도의 문자열로 추가 된 모든 값이 필요하다고 생각합니다. 이렇게하려면 클라이언트에서 보낸 요청을 수정해야합니다.다음 요청 본문이 제대로 값의 목록에 직렬화 복원됩니다

헤더 = 수 & 헤더 = 설명 & 헤더 = 위치 & 헤더 = 관리자 & 헤더 = 레벨 & 헤더 = SKU & 헤더 = 이름 & 헤더 = InhoudL & 헤더 = 헤더 InhoudKG = & & 외관 헤더 = 헤더 = 베소 저장 & & & 헤더 헤더 = CLP = & & 실행 헤더 공급 = H 보시다시피 eaders는 = HPZinnen

는 목록을 구축, Headers는 다른 값을 반복한다. Results 숄더 부의위한 부 요청은 동일한 방식으로 조정된다.

+0

덕분에, 그게 내가 몰랐 바보 같은 작은 일이야! – Firenter

관련 문제