2017-12-28 74 views
1

) HTTP 클라이언트를 사용하여 웹 사이트에 양식을 보내려고합니다. 그런 다음 웹 사이트에서 내 요청에 따라 데이터 목록을 반환합니다. 프로세스 자체는 정상적으로 작동하지만 브라우저에서 손으로 만 수행하면 충분하다는 3 가지 요청을 수행해야합니다.httpclienthandler를 사용하여 하나의 매개 변수로 여러 값을 게시 (C#

브라우저에는 데이터에 필터를 적용하는 확인란이 여러 개 있습니다. 게시 된 HTTP의 형태로 그 안에 다음과 같은 데이터가 있습니다

enter image description here

나는 다음 FormUrlEncodedContent로 변환 C#에서 dictonary 작성하여 동일한 데이터를 얻을 수 있었다 :

values = new Dictionary<string, string> 
{ 
    { "statuses[]", "2048" }, 
    { "issued_from", "" }, 
    { "issued_till", "" }, 
    { "listing_from", "" }, 
    { "listing_till", "" }, 
}; 
var content = new FormUrlEncodedContent(values); 
content.Headers.Add("X-Requested-With", "XMLHttpRequest"); 
var response = GlobalVar.client.PostAsync(URI, content).Result; 

로를 이 방법을 나는 3 개의 요청을하고 나중에 얻은 데이터를 병합해야합니다. 이것은 분명히 내 시스템 리소스 비용, 서버 리소스 비용 및 인터넷 대역폭과 관련된 가장 깨끗한 솔루션이 아닙니다.

:

Referer: https://www.example.com/en/example/?statuses[]=512&statuses[]=1024&statuses[]=2048&max_results=100&page=1 

를이 난 그냥 사전에 상태를 세 번 추가 할 수 있습니다 결론에 나를 인도 :

나는 다음처럼 보였다 브라우저에서 요청의 포맷되지 않은 헤더를 확인
values = new Dictionary<string, string> 
{ 
    { "statuses[]", "512" }, 
    { "statuses[]", "1024" }, 
    { "statuses[]", "2048" }, 
    { "issued_from", "" }, 
    { "issued_till", "" }, 
    { "listing_from", "" }, 
    { "listing_till", "" } 
}; 

사전은 데이터베이스처럼 작동하는 것으로 보이며 동일한 키 값을 여러 번 허용하지 않습니다.

하나의 요청으로 세 가지 상태를 모두 게시 할 수있는 방법에 대한 해결책을 가진 사람이 있습니까? 그냥 다른 것과 같은 것을 사용할 수 있습니까?

List<Tuple<string,string>>()? 

많은 도움을 주셔서 감사합니다.

답변

0

배열보다 값에 대한 CSV 문자열을 보내는 것이 좋습니다. 다음을 사용하는 배열보다 원하는 경우 :

Dictionary<string, string[]> values = new Dictionary<string, string[]>{ 
       { "statuses", new string[] {"512","1024","2048" }}, 
       { "issued_from", null }, 
       { "issued_till", null }, 
       { "listing_from", null }, 
       { "listing_till", null } 
      };