利用C++Builder实现Google的Web服务 (转)
Web服务是一个额外的接口,这个接口由某个网站提供,可以被其他的网站调用。
你可以把web服务想象成一个自我包含的组件,同时带有一种或多种的调用方法。他
可以驻扎在Inetnet的任何地方。通过他所提供的调用方法而被世界任何一个地方的客户
端所调用。
{
AnsiString content;
IHTMLElement *body;
IHTMLDocument *document;
GoogleSearchResult *result;
_di_GoogleSearchPort search;
AnsiString quer = Edit1->Text;
{
ShowMessage("查询内容为空!");
return ;
}
search = GetGoogleSearchPort(true, "http://api.google.com/GoogleSearch.wsdl");
try
{
result = search->doGoogleSearch("tGCTJkYos3YItLYzI9Hg5quBRY8bGqiM", quer, 0, 10, false, "", false, "", "", "");
}
catch(Exception &exception)
{
ShowMessage("网络有故障!");
}
{
AnsiString title = result->resultElements[i]->title;
AnsiString URL = result->resultElements[i]->URL;
AnsiString text = result->resultElements[i]->snippet;
content += "<a href=" + URL + " target=_blank>" + title + "</a><br>" + text + "<br><br>";
}
AnsiString str = "<html>" + content +" </html>";
SetHtml(CppWebBrowser1, str);
}
//---------------------------------------------------------------------------
SetHtml的实现函数如下:
void __fastcall TForm1::SetHtml( TCppWebBrowser *WebBrowser,AnsiString Html )
{
IStream *Stream;
HGLOBAL hHTMLText;
IPersistStreamInit *psi;
if( WebBrowser->Document == NULL )
return;
hHTMLText = GlobalAlloc(GPTR, Html.Length() + 1 );
if(0== hHTMLText ) {
ShowMessage( "GlobalAlloc Error" );
return;
}
CopyMemory( hHTMLText, Html.c_str(), Html.Length() );
OleCheck( CreateStreamOnHGlobal( hHTMLText, true, &Stream ) );
try {
OleCheck( WebBrowser->Document->QueryInterface( __uuidof(IPersistStreamInit), (void **)&psi ) );
try {
OleCheck( psi->InitNew() );
OleCheck( psi->Load(Stream) );
} catch( ... ) {
psi->Release();
}
} catch( ... ) {
Stream->Release();
}
//delete psi;
psi->Release();
// delete Stream;
Stream->Release();
}