.Net 웹 서비스 프로그래밍에 익숙하지 않습니다. 웹 서비스에서 클라이언트에게 XML 응답을 읽는 데 문제가 있습니다. 내 웹 서비스 측에서XML 응답 웹 서비스 읽기
: Service1.asmx.cs 코드 : 여기에서
[WebMethod(Description = "substruction")]
public double subtract(double i, double j)
{
return i - j;
}
[WebMethod(Description = "getxml")]
public XmlDocument GetXML()
{
StringBuilder sb = new StringBuilder();
XmlWriter writer = XmlWriter.Create(sb);
writer.WriteStartDocument();
writer.WriteStartElement("People");
writer.WriteStartElement("Person");
writer.WriteAttributeString("Name", "Nick");
writer.WriteEndElement();
writer.WriteStartElement("Person");
writer.WriteStartAttribute("Name");
writer.WriteValue("Kevin");
writer.WriteEndAttribute();
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(sb.ToString());
return xmlDocument;
}
, 내가 응답을 테스트하기 위해 두 가지 방법을 만들 수 있습니다. GetXML에서는 매우 간단한 XML을 만들고 패키지 XML을 클라이언트에 반환합니다. 내 클라이언트 측에서
:
// Add button click function
protected void Button1_Click(object sender, EventArgs e)
{
string selectFlag = selectOper.Value;
localhost.Service1 web = new localhost.Service1(); // Have to be the same name as youre Service1.
if (selectFlag.Equals("+"))
{
Result.Text = (web.addition(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString();
}
else if (selectFlag.Equals("-"))
{
Result.Text = (web.subtract(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString();
}
}
protected void Button2_Click(object sender, EventArgs e)
{
localhost.Service1 web2 = new localhost.Service1(); // Can u please do not be so silly, use different instance name here.
Button clickedButton = (Button)sender;
XmlDocument xmltest = new XmlDocument();
xmltest = web2.GetXML();
당신은 내가 web2.GetXML를 얻기 위해 노력 볼 수있다() XmlDoucment에 전체 XML을 얻을. 그러나 오류 1은 암시 적으로 'object'유형을 'System.Xml.XmlDocument'로 변환 할 수 없습니다. 명시 적 변환이 존재합니까? C : \ Documents and Settings \ qili \ My Documents \ Downloads \ WebService3 \ WebService2 \ WebService2 \ Default.aspx.cs 39 24 WebService2
뭔가 잘못하고있다. 하지만 Buttom1_Click 메서드는 정상적으로 작동합니다.
디버거를 사용하여 GetXML()이 반환 한 실제 유형을 확인 했습니까? 또한 다음 줄에서 XmlDocument를 교체 할 때 XmlDocument의 새 인스턴스를 초기화 할 필요가 없습니다. 명시 적으로 캐스팅을 시도해 볼 수 있습니다. xmltext = (XmlDocument) web2.GetXML() – tomasmcguinness
'public object GetXML()'을'public XmlDocument GetXML()'으로 변경 했습니까? 그렇다면 서비스에 대한 참조를 다시 추가해야합니다. – Reniuz
안녕하세요 Tomasmcguinness, 그것은 공개 XmlDocument GetXML() XmlDocument입니다. – QLiu