[질문] XML Service 관련 질문 입니다.

aavaaa의 이미지

몇일째 고민하고 있는지 모르겠네요.

문제는 클라이언트-서버 간에 데이터를 XML로 주고 받고 싶은데 잘 안된다는 겁니다.
클라이언트는 C++로 구현하고 웝 서버는 ASP.NET이나 C++로 구현해야 합니다.
특히 제가 하고자 하는 것은 웹 서비스 서버를 구현하는 것 입니다. 추후에 XML 데이터를
C++로 프로세스를 만들어 처리해야 하구요.

우선 웹 서비스를 만들어(.asmx) 접속하고 값을 주고 받았는데 클라이언트에 돌아오는 값은
SOAP 형태의 값이 였습니다. 전 순수한 XML 값만 받고 싶습니다.

이것 저것 해보느라 코드가 좀 지져분 합니다.

   [WebMethod(Description = "This method converts a temperature in " +
       "degrees Fahrenheit to a temperature in degrees Celsius.")]
    //public string ConvertTemperature(double dFahrenheit)
    public XmlDocument ConvertTemperature(double dFahrenheit)
    //public XmlDocument ConvertTemperature()
    {
        ////Console.Write("1");
        ////double a = ((dFahrenheit - 32) * 5) / 9;
 
        //return "<responseResult>" +a.ToString()+ "</responseResult>";
 
 
        XmlDocument dom = new XmlDocument();
        XmlElement people = dom.CreateElement("People"); 
        dom.AppendChild(people); 
        XmlElement person = dom.CreateElement("Person"); 
        people.AppendChild(person); 
        XmlElement firstName = dom.CreateElement("FirstName"); 
        person.AppendChild(firstName);
        XmlText text = dom.CreateTextNode("Bob"); 
        firstName.AppendChild(text);    // load some XML ...   
        return dom;
    } 

다른 방법으로는 웹 page를 만들어서 시도해 보았는데 이번에는 HTML 형식으로 클라이언트에 넘겨 줍니다.

    protected void Page_Load(object sender, EventArgs e)
    {
        XmlDocument xd = new XmlDocument();
 
        //Response.Write("test");
        string str = Request.Form.ToString();
        //string str = "<br><h1> abcd </h1>";
        Page.RegisterClientScriptBlock("testMsg", str);
       // Response.End();
    }

이 왜에 ASP 소스를 구해 시도해 보았는데 이는 잘 구현 되었습니다.
하지만 제가 VB를 잘 모르는 터라 ASP.NET으로 마이그레이션이 안되더군요 ㅜㅜ

<%
dim XMLDom
dim currNode
dim stockSymbol
Dim ConnectionString
Dim Connection
Dim rs
Dim field
Dim SQLQuery
 
'Process the XML Request String 
Set XMLDom = Server.CreateObject("Microsoft.XMLDOM")
XMLDom.async = False
if (XMLDom.loadXML(request.form) = false) then
	Response.Write("Invalid Request String")
	Response.End()
end if
 
Set currNode = XMLDom.documentElement.selectSingleNode("/RequestStockPrice")
stockSymbol = currNode.getAttribute("Symbol")
 
'Make Database Connection
ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\inetpub\wwwroot\RealTimeStock_srv\stocks.mdb;DefaultDir=;UID=;PWD=;"
Set Connection = Server.CreateObject("ADODB.Connection")
 
Connection.Open ConnectionString
set rs = Server.CreateObject("ADODB.RecordSet")
 
SQLQuery = "SELECT LastTradePrice FROM RealTimeStock where Symbol ='"+stockSymbol+"'"
 
'Retrieve stock price from database
rs.Open SQLQuery, Connection
 
'Form response XML string
Response.Write("<ResponseStockPrice>")
 
if ( rs.EOF = false ) then
	For each field in rs.Fields
		Response.Write("<")
		Response.Write field.Name
		Response.Write(">")
 
		Response.Write field.Value
 
		Response.Write("</")
		Response.Write field.Name
		Response.Write(">")
	Next
else
		'No record found
		Response.Write("<ErrorMesg>")
		Response.Write stockSymbol&" : Stock symbol not found in database"
            	Response.Write("<a>")
		Response.Write (" : Stock symbol not found in database")
		Response.Write("</a>")
		Response.Write("</ErrorMesg>")
 
 
 
 
end if
Response.Write("</ResponseStockPrice>")
 
'close connections
rs.Close
Connection.Close
 
Set dom = Nothing
Set currNode = Nothing
Set rs = Nothing
Set field = Nothing
Set Connection = Nothing
%>

계속 알아봐야 겠지만 점점 자괴감만 OTL......

결론적으로 제가 도움을 바라는 것은 C++ 이나 ASP.NET 으로 XML 서비스를 제공할 수 있는
웹 서버를 구현하는 것입니다. 물론 XML을 통으로 주고 받아야 하구요.

고수님들 도와주소서~~ㅠㅠ

aavaaa의 이미지

실수로 3개나 올렸네요 ㅡㅡ;

lovian의 이미지

원래 WebService는 SOAP 메시지를 주고 받습니다.
WebService를 만드셨으니. ^^

정확하게 웹페이지를 만드시면 될 것 같습니다.

-----------------
한글을 사랑합니다.

aavaaa의 이미지

우선 도움 감사드립니다.

lovian 님 말씀처럼 어떻게 해도 SOAP으로 반환 되더군요

그래서 웹 페이지를 만들어 XML를 반환하도록 했습니다.

또 다시 문제는 클라에서 보내는 XML을 확인해 볼 수가 없다는 것인데

request.form.count를 출력해 보면 0만 나옵니다. ㅡㅜ

제가 웹 페이지를 거의 처음 해보는 거라 이것 저것 태클이 많네요 ㅎㅎ