2010-12-31 4 views
0

웹 사이트에 XML 데이터를 게시하는 프로젝트의 웹 페이지가 있습니다. 우리가 게시물 XML 다음 패스 ASP.NET의 타임 스탬프에 대한 비 직렬화 문제

string data = string.Concat("XMLParameter=", SampleXML, "&", "AccessCode=", "XYZ"); 
if (uri.Scheme == Uri.UriSchemeHttp) 
{ 
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); 
    request.Method = WebRequestMethods.Http.Post; 
    request.ContentLength = data.Length; 
    request.ContentType = "application/x-www-form-urlencoded"; 
    StreamWriter writer = new StreamWriter(request.GetRequestStream()); 
    writer.Write(data); 
    writer.Close(); 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    StreamReader reader = new StreamReader(response.GetResponseStream()); string tmp = reader.ReadToEnd(); 
    response.Close(); 
    Response.Write(tmp); 
} 

, 우리의 웹 페이지에서 수신 측에

<notification timestamp="2009-09-11T11:51:07+02:00"> 
    <reservation creation_date="2010-09-10T12:03:13"> 
    </reservation> 
</notification> 

, 우리가받는 타임 스탬프 +를 포함하지 않습니다. + 대신에 스페이스 문자를줍니다. 그래서, 그것을 역 직렬화하는 동안, 우리는 오류가 있습니다.

우리는 얻을으로 Request.Form [ "XMLParameter"]

모든 솔루션을 사용하여 페이지의 데이터 ???

답변

1

XML 데이터가 포함 된 텍스트 필드가 포함 된 HTML 양식에서 오는 것처럼 XML 데이터가 게시되는 재미있는 서비스가 있습니다.

결과적으로 웹 서버는 데이터가 URL 인코딩 될 것으로 예상합니다. 콘텐츠 유형에서 인코딩되었음을 알릴 수도 있습니다. 그러나 그렇지 않습니다. 코드에서 아무 곳이나 인코딩하지 마십시오.

재미있는 서비스를 계속 사용하려면 HttpUtility.UrlEncode을 통해 XML 데이터를 먼저 실행해야합니다.

+0

코도, 재밌을 것 같지만 그렇지 않습니다. 사실 우리는 다른 웹 사이트와의 통합을 위해 웹 서비스를 만들고 있습니다. 그러나 오래된 웹 사이트 나 PHP 사이트 중 일부는 POST를 사용하여 데이터를 보내고 있습니다. 그리고 웹 서비스를 사용하게하는 것이 어렵다는 것을 알고 있습니다 : P. 어쨌든, 내가 원한 것을 완벽하게 설명하는 설명문을 쓸 수 없다면 미안해. 그러나 나는 이것을 시도해야하고 제 3 자에게 샘플을 보내어 인코딩 된 URL이 오는지 여부를 확인해야한다고 생각합니다. 인코딩 된 URL을 전송하는 옵션이 있습니까? P. 내가 그 (것)들을 바꿀 수 없었다는 것을 말했다 : –

+0

그들은 암호로 고쳐 쓴 URL를 보내야한다. 그렇지 않으면 데이터를 XMLParameter 및 AccessCode 매개 변수로 분할 할 수 없습니다. 내장 함수 인 _urlencode_가 포함되어 있기 때문에 PHP로 작성하기가 너무 어렵지 않아야합니다. – Codo

+0

예. 하지만 제 3 자 사람들이 사용하는 것을 모릅니다. 그들은 방금 우리에게 데이터를 게시하고 위의 형식으로 보내 주겠다고 말했습니다. 제가 그들과 이야기하고 그들의 반응이 무엇인지 보도록하겠습니다. 나는 그들이 당신의 대답에 따라 urlencoded를 통과해야한다고 생각합니다. –