利用C++Builder实现Google的Web服务 (转)
2007-11-15 14:56
435 查看
http://blog.csdn.net/guanwen_zhang/archive/2007/11/04/1866346.aspx
Web服务是一个额外的接口,这个接口由某个网站提供,可以被其他的网站调用。
你可以把web服务想象成一个自我包含的组件,同时带有一种或多种的调用方法。他
可以驻扎在Inetnet的任何地方。通过他所提供的调用方法而被世界任何一个地方的客户
端所调用。
[align=left][/align]
[align=left]Google提供了一个Web服务让你可以使用他的数据库去搜索,方便的实现对网页的搜索。[/align]
[align=left]Google的Web服务主要提供三个方法:[/align]
[align=left] [/align]
[align=left]doGoogleSearch(), doGetCachedPage(), 和 doSpellingSuggestion().[/align]
[align=left]最常用的就是doGoogleSearch(),方法将返回和查询字符相符合的结果。[/align]
[align=left]然后这个方法返回一个GoogleSearchResult类的实例,这个实例中包含了搜索的结果。[/align]
[align=left][/align]
[align=left]实现Google的Web服务需要获得Google提供的许可证,现在这个许可证也不再发放,但可以在网上搜索到。[/align]
[align=left][/align]
[align=left]下面就详细介绍利用C++Builder实现对Google服务的使用:[/align]
[align=left]首先新建一个工程,保存为WebService.bpr,保存Cpp文件为MainUnit.cpp,[/align]
[align=left]再在File|New|Other...中选择WebServces页面,选择WSDL Importer,点击OK,[/align]
[align=left]出现WSDL Importer Wizard向导,在Location of WSDL File or URL中填入Google的Web服务[/align]
[align=left]接口的URL:http://api.google.com/GoogleSearch.wsdl,点击Next,Finish完成配置过程,此时[/align]
[align=left]C++Builder会自动生成Google服务的WSDL的描述文件,[/align]
[align=left]在窗口中添加一个Button、Label、Edit和CppWebBrowser,[/align]
[align=left]双击Button,在其中添加如下代码:[/align]
[align=left][/align]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString content;
IHTMLElement *body;
IHTMLDocument *document;
GoogleSearchResult *result;
_di_GoogleSearchPort search;
AnsiString quer = Edit1->Text;
if (quer == "")
{
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("网络有故障!");
}
for (int i=0; i<10; i++)
{
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>";
}
CppWebBrowser1->Navigate(L"about:blank");
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();
}
[align=left]还需要在头文件中添加#include "mshtml.h"文件,[/align]
[align=left]编译连接,生成可执行文件。[/align]
[align=left]在Edit中添加要搜索的内容,点击Button,即可执行,[/align]
[align=left]如果需要其他属性,还可以在result->resultElements[i]选择搜索结果的其他属性最后显示出来。[/align]
[align=left]搜索结果最后显示在ppWebBrowser中,由于发送XML文件、解析XML文件的过程,显示过程会有一定的时间间隔,需要耐心等待。[/align]
Web服务是一个额外的接口,这个接口由某个网站提供,可以被其他的网站调用。
你可以把web服务想象成一个自我包含的组件,同时带有一种或多种的调用方法。他
可以驻扎在Inetnet的任何地方。通过他所提供的调用方法而被世界任何一个地方的客户
端所调用。
[align=left][/align]
[align=left]Google提供了一个Web服务让你可以使用他的数据库去搜索,方便的实现对网页的搜索。[/align]
[align=left]Google的Web服务主要提供三个方法:[/align]
[align=left] [/align]
[align=left]doGoogleSearch(), doGetCachedPage(), 和 doSpellingSuggestion().[/align]
[align=left]最常用的就是doGoogleSearch(),方法将返回和查询字符相符合的结果。[/align]
[align=left]然后这个方法返回一个GoogleSearchResult类的实例,这个实例中包含了搜索的结果。[/align]
[align=left][/align]
[align=left]实现Google的Web服务需要获得Google提供的许可证,现在这个许可证也不再发放,但可以在网上搜索到。[/align]
[align=left][/align]
[align=left]下面就详细介绍利用C++Builder实现对Google服务的使用:[/align]
[align=left]首先新建一个工程,保存为WebService.bpr,保存Cpp文件为MainUnit.cpp,[/align]
[align=left]再在File|New|Other...中选择WebServces页面,选择WSDL Importer,点击OK,[/align]
[align=left]出现WSDL Importer Wizard向导,在Location of WSDL File or URL中填入Google的Web服务[/align]
[align=left]接口的URL:http://api.google.com/GoogleSearch.wsdl,点击Next,Finish完成配置过程,此时[/align]
[align=left]C++Builder会自动生成Google服务的WSDL的描述文件,[/align]
[align=left]在窗口中添加一个Button、Label、Edit和CppWebBrowser,[/align]
[align=left]双击Button,在其中添加如下代码:[/align]
[align=left][/align]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString content;
IHTMLElement *body;
IHTMLDocument *document;
GoogleSearchResult *result;
_di_GoogleSearchPort search;
AnsiString quer = Edit1->Text;
if (quer == "")
{
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("网络有故障!");
}
for (int i=0; i<10; i++)
{
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>";
}
CppWebBrowser1->Navigate(L"about:blank");
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();
}
[align=left]还需要在头文件中添加#include "mshtml.h"文件,[/align]
[align=left]编译连接,生成可执行文件。[/align]
[align=left]在Edit中添加要搜索的内容,点击Button,即可执行,[/align]
[align=left]如果需要其他属性,还可以在result->resultElements[i]选择搜索结果的其他属性最后显示出来。[/align]
[align=left]搜索结果最后显示在ppWebBrowser中,由于发送XML文件、解析XML文件的过程,显示过程会有一定的时间间隔,需要耐心等待。[/align]
相关文章推荐
- 利用C++Builder实现Google的Web服务
- 避开Google Voice Search利用Google Speech API实现Android语音识别
- 避开Google Voice Search利用Google Speech API实现Android语音识别之Demo实现
- 利用Google接口实现基站定位
- 利用ddns实现apache的web服务
- 利用google对特定站点进行测试的实现
- 利用Google和CSDN的API实现手机实时接收论坛信息
- 避开Google Voice Search利用Google Speech API实现Android语音识别
- ASP利用Google实现在线翻译功能
- html5利用google实现定位和搜索
- 利用Google Speech API实现Speech To Text
- ASP利用Google实现在线翻译功能
- 利用google开发平台实现按关键词搜索结果的爬取
- 避开Google Voice Search利用Google Speech API实现Android语音识别之原理
- 如何利用google原生包在android平台上实现语音识别
- 利用Python脚本实现ping百度和google的方法
- 利用Google接口实现基站定位
- 利用C++Builder 6 中OLE自动化功能实现调用Word进行报表制作
- 利用GoogleMaps sdk 1.3.1 实现在 iOS 5.0下 编译成功!真是太不容易了