원인은 xml-rpc양식으로 변환할때 array가 재선언시 <value>를 추가해 주지 않음에서 발생한다.
이의 해결 방법은
CookComputing.XmlRpc라이브러리중에 XmlRpcSerializer.cs파일속에
453 라인의 BuildArrayXml 함수를 다음과 같이 수정하면 해결될 것같다.
void BuildArrayXml(
XmlTextWriter xtw,
Array ary,
int CurRank,
int[] indices,
MappingAction mappingAction)
{
xtw.WriteStartElement("", "array", "");
xtw.WriteStartElement("", "data", "");
if (CurRank < (ary.Rank-1))
{
for (int i=0; i<ary.GetLength(CurRank); i++)
{
indices[CurRank] = i;
xtw.WriteStartElement("", "value", ""); /* 추가 */
BuildArrayXml(xtw, ary, CurRank+1, indices, mappingAction);
xtw.WriteEndElement(); /* 추가 */
BuildArrayXml(xtw, ary, CurRank+1, indices, mappingAction);
}
}
else
{
for (int i=0; i<ary.GetLength(CurRank); i++)
{
indices[CurRank] = i;
Serialize(xtw, ary.GetValue(indices), mappingAction);
}
}
xtw.WriteEndElement();
xtw.WriteEndElement();
}
위의 파란부분을 삽입해주어야 한다.
그러면 <value>를 열고 닫는 태그가 포함되어 오류를 해결할 수 있을것이다.
그런데 컴파일도중에 어셈블리 키값에 대해 설정해 주어야 하는데 도저히 모르겠어서
라이브러리 갱신을 실패하였다. --;;;;
두번째 메서드의 response xml (0) | 2011.11.17 |
---|---|
첫번째 메서드의 response xml (0) | 2011.11.17 |
XML-RPC 오류발견 (0) | 2011.11.17 |
서로다른 플랫폼에서 주의할 점 (0) | 2011.11.17 |
두번째 메서드의 Request xml (0) | 2011.11.17 |