2012-07-24 2 views
0

현재 두 가지 원격 웹 서비스를 호출하는 C# WinForms 응용 프로그램을 만들고 있습니다. 문자열 앰퍼샌드를 포함 관련된 버그를 조사에서는, 나는 다른 웹 서비스 '인코딩'POST 기관 다음과 같은 방법을 통해 온 (일반적으로 인정 하듯이, 앰퍼샌드 문제가되지 않습니다.)POST 본문에서 전체 URL 인코딩을 수행 할 이유가 있습니까?

object o = row.Values[i]; //some object 
Type valueType = o.GetType(); 
if (valueType.Name.Equals("String", StringComparison.InvariantCultureIgnoreCase)) 
{ 
    o = o.ToString().Replace("&", "%26"); 
} 

I 이 부분에서 약간의 WTF를했지만 POST 시체에서 전체 URL 인코딩을 수행하는 실제 이유는 무엇입니까? 분명히 유일한 두 가지 위험 요소는 앰퍼샌드와 물음표입니까?

+0

URL이 포함 된 HTTP가있는 모든 것은 일반적으로 URL로 인코딩되어야합니다. 또한 UTF-8 문자 인코딩을 사용하십시오. –

+0

... 그리고 퍼센트 문자 ... 나는 단지 스펙을 고수하겠다. –

답변

1

질문은 약간 일방적입니다. POST 데이터를 인코딩하는 유일한 이유는 다른 쪽에서 인코딩하려고하는 경우입니다. 예 : 게시물 데이터의 콘텐츠 유형이 "x-www-form-urlencoded"이면 예, 데이터를 인코딩해야합니다. 다른 쪽 이 아닌 경우 urlencoded 될 것을 기대하십시오.

일반적으로 유연한 종점이 있으므로 웹 서비스로 이동하는 데이터를 urlencode 할 필요가 없습니다. 양식 (예 : 양식 게시물)을 통해 웹 페이지에서 직접 호출 할 것으로 예상되는 웹 서비스가있는 경우 브라우저에서 직접 urlencoding을 수행 할 수 있습니다.이 경우 웹 서비스는 URL 인코딩 된 따라서 아무 것도 이고 다른 사람은입니다.

관련 문제