문제

C#에서 HTTP 연결을 열고 XML을 다운로드하고 결과에서 하나의 값을 가져와야 하는 경우 어떻게 해야 합니까?

일관성을 위해 웹 서비스가 www.webservice.com에 있고 POST 인수 fXML=1을 전달하면 다시 반환된다고 상상해 보세요.

<xml><somekey>somevalue</somekey></xml>

"어떤 가치"를 내뱉고 싶습니다.

도움이 되었습니까?

해결책

이 코드를 사용하면 훌륭하게 작동합니다.

System.Xml.XmlDocument xd = new System.Xml.XmlDocument;
xd.Load("http://www.webservice.com/webservice?fXML=1");
string xPath = "/xml/somekey";
// this node's inner text contains "somevalue"
return xd.SelectSingleNode(xPath).InnerText;

편집하다:방금 일반 XML이 아닌 웹 서비스에 대해 이야기하고 있다는 것을 깨달았습니다.Visual Studio 솔루션의 솔루션 탐색기에서 참조를 마우스 오른쪽 버튼으로 클릭하고 "웹 참조 추가"를 선택해 보세요.URL을 묻는 대화상자가 나타나면 URL을 붙여넣기만 하면 됩니다."http://www.webservice.com/webservice.asmx".VS는 필요한 모든 도우미를 자동 생성합니다.그런 다음 다음과 같이 전화하면 됩니다.

com.webservice.www.WebService ws = new com.webservice.www.WebService();
// this assumes your web method takes in the fXML as an integer attribute
return ws.SomeWebMethod(1);

다른 팁

다음 내용을 먼저 읽어보시면 도움이 될 것 같습니다.

웹 서비스 생성 및 사용 (.NET에서)

이는 XML 입력이 사용되는 방법(역직렬화)을 포함하여 .NET에서 웹 서비스가 사용되는 방법에 대한 일련의 자습서입니다.

다음과 같은 것을 사용할 수 있습니다.

var client = new WebClient();
var response = client.UploadValues("www.webservice.com", "POST", new NameValueCollection {{"fXML", "1"}});
using (var reader = new StringReader(Encoding.UTF8.GetString(response)))
{
    var xml = XElement.Load(reader);
    var value = xml.Element("somekey").Value;
    Console.WriteLine("Some value: " + value);                
}

참고: 이 코드를 테스트할 기회는 없었지만 작동할 것입니다. :)

SOAP 대신 POST를 구체적으로 사용해야 하는 경우 POST 호출을 수신하도록 웹 서비스를 구성할 수 있다는 점을 추가하는 것도 가치가 있을 수 있습니다.

MSDN 페이지를 확인하세요.ASP.NET을 사용하여 생성된 XML Web Services에 대한 구성 옵션

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top