Click here to Skip to main content
15,885,875 members
Articles / Desktop Programming / MFC

WebService Call From VC++6.0

Rate me:
Please Sign up or sign in to vote.
3.87/5 (5 votes)
22 Jun 2007CPOL2 min read 60.9K   3.6K   26   10
Useful for beginners who want to call Webserive from VC6.0

Introduction

This article is useful for those who have never worked with WebService call from VC++ and they want to know how to send a request and get a response? This is my first application which I have created for learning purposes.

Background

I have referred to one CodeProject article. For WebService call, we require two things: one is that WebService must be created before calling it and the other is this VC++ application which calls it.

Using the Code

First of all, I would like to give you a brief on how to create a WebService. I am a System developer, that's why I don't have that good knowledge of creating a Webservice. You need to start Visual 2005, then File ->New-> website-> ASP.NET webservice. Then one default function will be created by the browser. Inside that function, you need to write some functionality that you want to take as request and return something on input basis. I have taken name as input and return address as per input name. That's why you can see Chaitanya name inside the XML code which I am posting on that link. Once the web service is created, you need to publish your site (which you can do using Inet manager).

Here is the code which I have used for posting a request and getting a response from WebService.

C++
//
// Any source code blocks look like this
//
IXMLHttpRequestPtr httpReq( _uuidof(MyXMLHTTPRequest));
 _bstr_t  HTTPMethod ;
 _variant_t noAsync = _variant_t( (bool)false );
 //httpReq.CreateInstance("MyXMLHTTPRequest");
 CString strUserName = "mahesh"; // this one is user name of webservice machine
 VARIANT vUser;
 vUser.vt = VT_BSTR;
 vUser.bstrVal = strUserName.AllocSysString();
 CString strPass = "gtl=11"; // this is system password
 VARIANT vPassword;
 vPassword.vt = VT_BSTR;
 vPassword.bstrVal = strPass.AllocSysString();
 HTTPMethod = _bstr_t( "POST" );
// http://gtl-334/XmlTesting/Service.asmx this is url as webservice.
 httpReq->open(HTTPMethod ,
 "http://gtl-334/XmlTesting/Service.asmx",noAsync,vUser,vPassword);
 httpReq->setRequestHeader("Content-Type", "application/soap+xml");
 CString szRequest;
 
 szRequest = "<?xml version=\"1.0\" encoding=\"utf-8\"?> \
<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" 
	xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" 
	xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\"> \
  <soap12:Body>\
    <HelloWorld xmlns=\"http://tempuri.org/\"> \
      <strUserName>Chaitanya</strUserName>\
    </HelloWorld>\
  </soap12:Body>\
</soap12:Envelope>";
  
 VARIANT vRequest;
 vRequest.vt = VT_BSTR;
 vRequest.bstrVal = szRequest.AllocSysString();
 
 httpReq->send(vRequest); // sending to that URL
 BSTR strText;
 _bstr_t bsResponse = httpReq->responseText; //receiving reply from web service
   
 AfxMessageBox(bsResponse);
 
 CDialog::OnOK(); 

One very important thing is that we need to import MSXML.dll which you can see in the code in stdafx.h and "using namespace MSXML;" line in file.

Points of Interest

You can advise me on how to improve this article so that I can also learn new things. If you have any queries, you can post a message. I will try to solve it, and that way I will also learn new things in this area. You can mail me at cha1202001@yahoo.com.

History

  • 22nd June, 2007: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Technical Lead Tata Consultancy Servcies
India India
I have experience in iOs, Objective C,Java,C++/Vc++ 6.0,vc.Net,MFC,ATL,COM,WTL.

You can contact me on chaitanya.ce@gmail.com if you have any query.

Comments and Discussions

 
QuestionIXMLHttpRequestPtr Pin
Member 1108484218-Dec-17 1:50
Member 1108484218-Dec-17 1:50 
Questionmsxml6r.dll cannot be loaded Pin
ArvindRSingh1-Sep-11 5:11
ArvindRSingh1-Sep-11 5:11 
GeneralAssertion is coming when i use the same code Pin
Member 35010954-Jun-09 1:03
Member 35010954-Jun-09 1:03 
GeneralRe: Assertion is coming when i use the same code Pin
chaitanya shah11-Jun-09 3:22
chaitanya shah11-Jun-09 3:22 
GeneralYou can also import a WSDL file - it's a little easier to maintain Pin
jimbosetwe6-Nov-08 3:41
jimbosetwe6-Nov-08 3:41 
GeneralRe: You can also import a WSDL file - it's a little easier to maintain Pin
chaitanya shah11-Jun-09 3:27
chaitanya shah11-Jun-09 3:27 
Questionhow can send to the web service xml data Pin
nabeel826-Oct-08 22:04
nabeel826-Oct-08 22:04 
AnswerRe: how can send to the web service xml data Pin
chaitanya shah11-Jun-09 3:32
chaitanya shah11-Jun-09 3:32 
Questionwhat if a out parameter of a web service is a dataset, how will we handle in VC++ Pin
cooldeo18t18-May-08 15:24
cooldeo18t18-May-08 15:24 
AnswerRe: what if a out parameter of a web service is a dataset, how will we handle in VC++ Pin
chaitanya shah21-May-08 1:37
chaitanya shah21-May-08 1:37 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.