如何用c语言实现基于http的webservice

如何用c语言实现基于http的webservice,第1张

package comyuduntest;

import javarmiRemoteException;

import orgapacheaxisclientCall;

import orgapacheaxisclientService;

import orgapacheaxismessagePrefixedQName;

import orgapacheaxismessageSOAPHeaderElement;

import comcezannegoldenuserException;

import comcezannegoldenuserUserManagerServiceProxy;

import javaxxmlnamespaceQName;

import javanetMalformedURLException;

import javaxxmlrpcServiceException;

import javaxxmlsoapName;

import javaxxmlsoapSOAPException;

public class testWebService {

public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException

{

//标识Web Service的具体路径

String endpoint = "WebService服务地址";

// 创建 Service实例

Service service = new Service();

// 通过Service实例创建Call的实例

Call call = (Call) servicecreateCall();

//将Web Service的服务路径加入到call实例之中

callsetTargetEndpointAddress( new javanetURL(endpoint) );//为Call设置服务的位置

// 由于需要认证,故需要设置调用的SOAP头信息。

Name headerName = new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url", "string_itemName") );

orgapacheaxismessageSOAPHeaderElement header = new SOAPHeaderElement(headerName);

headeraddTextNode( "blablabla" );

calladdHeader(header);

// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url", "SoapHeader");

// soapHeaderElementsetNamespaceURI("发布的wsdl里的targetNamespace里的url");

// try

// {

// soapHeaderElementaddChildElement("string_itemName")setValue("blablabla");

// }

// catch (SOAPException e)

// {

// eprintStackTrace();

// }

// calladdHeader(soapHeaderElement);

//调用Web Service的方法

orgapacheaxisdescriptionOperationDesc oper;

orgapacheaxisdescriptionParameterDesc param;

oper = new orgapacheaxisdescriptionOperationDesc();

opersetName("opName");

param = new orgapacheaxisdescriptionParameterDesc(new javaxxmlnamespaceQName("", "arg0"), orgapacheaxisdescriptionParameterDescIN, new javaxxmlnamespaceQName(", "string"), javalangStringclass, false, false);

paramsetOmittable(true);

operaddParameter(param);

param = new orgapacheaxisdescriptionParameterDesc(new javaxxmlnamespaceQName("", "arg1"), orgapacheaxisdescriptionParameterDescIN, new javaxxmlnamespaceQName(", "string"), javalangStringclass, false, false);

paramsetOmittable(true);

operaddParameter(param);

param = new orgapacheaxisdescriptionParameterDesc(new javaxxmlnamespaceQName("", "arg2"), orgapacheaxisdescriptionParameterDescIN, new javaxxmlnamespaceQName(", "string"), javalangStringclass, false, false);

paramsetOmittable(true);

operaddParameter(param);

opersetReturnType(new javaxxmlnamespaceQName(", "string"));

opersetReturnClass(javalangStringclass);

opersetReturnQName(new javaxxmlnamespaceQName("", "return"));

opersetStyle(orgapacheaxisconstantsStyleWRAPPED);

opersetUse(orgapacheaxisconstantsUseLITERAL);

operaddFault(new orgapacheaxisdescriptionFaultDesc(

new javaxxmlnamespaceQName("发布的wsdl里的targetNamespace里的url", "Exception"),

"Exception",

new javaxxmlnamespaceQName("发布的wsdl里的targetNamespace里的url", "Exception"),

true

));

callsetOperation( oper );

callsetOperationName(new javaxxmlnamespaceQName("发布的wsdl里的targetNamespace里的url", "opName"));

//调用Web Service,传入参数

String res = ( String ) callinvoke( new Object[]("arg0","arg1"));

Systemoutprintln("===============");

return res;

}

/

@param args

/

public static void main(String[] args) {

try {

Systemoutprintln(getResult());

} catch (MalformedURLException e) {

eprintStackTrace();

} catch (RemoteException e) {

eprintStackTrace();

} catch (ServiceException e) {

eprintStackTrace();

} catch (SOAPException e) {

eprintStackTrace();

}

}

}

1、配置ODBC数据源

2、使用SQL函数进行连接。

对于1、配置数据源,配置完以后就可以编程操作数据库了。

对于2、使用SQL函数进行连接,参考代码如下:

#include<windowsh>

#include<sqlh>

#include<sqlexth>

void main()

{

HENV henv; //环境句柄

HDBC hdbc; //数据源句柄

HSTMT hstmt; //执行语句句柄

unsigned char datasource[]="数据源名称"; //即源中设置的源名称

unsigned char user[]= "用户名"; //数据库的帐户名

unsigned char pwd[]= "密码"; //数据库的密码

unsigned char search[]="select xm from stu where xh=0";

SQLRETURN retcode; //记录各SQL函数的返回情况

// 分配环境句柄

retcode= SQLAllocEnv(&henv); // 等介于 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL

, &henv);

// 设置ODBC环境版本号为30

retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void)SQL_OV_ODBC3, 0);

// 分配连接句柄

retcode= SQLAllocConnect(henv,&hdbc); // 等介于 SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

//设置连接属性,登录超时为rgbValue秒(可以没有)

// SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)(rgbValue), 0);

//直接连接数据源

// 如果是windows身份验证,第二、三参数可以是

,也可以是任何字串

//SQL_NTS 即 "

retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS );

//分配语句句柄

retcode= SQLAllocStmt(hdbc,&hstmt); // 等介于 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

//直接执行查询语句

retcode=SQLExecDirect(hstmt,search,SQL_NTS);

//将数据缓冲区绑定数据库中的相应字段(i是查询结果集列号,queryData是绑定缓冲区,BUFF_LENGTH是缓冲区长度)

SQLBindCol(hstmt, i, SQL_C_CHAR, queryData[i-1], BUFF_LENGTH, 0);

//遍历结果集到相应缓冲区 queryData

SQLFetch(hstmt);

/

对遍历结果的相关操作,如显示等

/

//注意释放顺序,否则会造成未知错误!

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

SQLDisconnect(hdbc);

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

SQLFreeHandle(SQL_HANDLE_ENV, henv);

}

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何用c语言实现基于http的webservice

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情