‘壹’ C++实现webservice
1 C++当然可以实现webservice,这是毋庸置疑的.axis2你知道吗?本质是运行在tomcat下的一个servlet,分java版本,和c语言版本.官方网站为:http://axis.apache.org/,首页上写着:
The well known Apache Axis, and the the second generation of it, the Apache Axis2, are two Web Service containers that helps users to create, deploy, and run Web Services.
Axis2 is avaialble in both Java as well as C, languages and details about each version can be found below. 大概意思就是这东西分java版本和C版本,可以方便用户创建,部署,运行web service.而C++完全是兼容C的.
2 当然需要服务器,可能要实现某个服务吧,至于怎样为其他平台服务,主要是监听端口实现解析http协议.
3 你的问题有问题,js不需要拼串成XML,服务器才要拼串,JS是运行在客户端的,客户端也不是通过SOAP与服务端进行通讯的,而是根据需要调用的服务的WSDL,提供对应参数,客户端与服务端的通讯是用http协议的,而通讯方式根据是GET还是POST把相关参数放到HTTP头或者体中.而web service之间的通讯才可能用得到SOAP.
4 PHP调用web service是非常简单的,貌似有个函数通过SOAP调用.C++编写的web service肯定有WSDL,可以根据WSDL描述的端口参数,来调用.
PS1:我没有做过C++的Web service,只做过java的,但是所有语言都是相同的,基本原理都是一样的,另外web service最好的做法是对外隐藏的,不能直接调用,应该有个类似调度中心的存在来负责调用,这是一个设计方式. 当然直接调用也是可以的,但这种方式效率不高.
PS2:C++可以做web service,但不是很好,缺乏技术支持,软件支持,虽然管道过滤器模型不限制过滤器的实现方式,但怎么说呢,C++就是不适合,毕竟和其他构件存在配合问题,而且开发成本也会相对要高点. 现在主流的是C#和JAVA.
‘贰’ 如何用c语言实现基于http的webservice
package com.yun.test;
import java.rmi.RemoteException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.SOAPHeaderElement;
import com.cezanne.golden.user.Exception;
import com.cezanne.golden.user.UserManagerServiceProxy;
import javax.xml.namespace.QName;
import java.net.MalformedURLException;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
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) service.createCall();
//将Web Service的服务路径加入到call实例之中.
call.setTargetEndpointAddress( new java.net.URL(endpoint) );//为Call设置服务的位置
// 由于需要认证,故需要设置调用的SOAP头信息。
Name headerName = new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url", "string_itemName") );
org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);
header.addTextNode( "blablabla" );
call.addHeader(header);
// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url", "SoapHeader");
// soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");
// try
// {
// soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
// }
// catch (SOAPException e)
// {
// e.printStackTrace();
// }
// call.addHeader(soapHeaderElement);
//调用Web Service的方法
org.apache.axis.description.OperationDesc oper;
org.apache.axis.description.ParameterDesc param;
oper = new org.apache.axis.description.OperationDesc();
oper.setName("opName");
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName(", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName(", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName(", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
oper.setReturnType(new javax.xml.namespace.QName(", "string"));
oper.setReturnClass(java.lang.String.class);
oper.setReturnQName(new javax.xml.namespace.QName("", "return"));
oper.setStyle(org.apache.axis.constants.Style.WRAPPED);
oper.setUse(org.apache.axis.constants.Use.LITERAL);
oper.addFault(new org.apache.axis.description.FaultDesc(
new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),
"Exception",
new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),
true
));
call.setOperation( oper );
call.setOperationName(new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "opName"));
//调用Web Service,传入参数
String res = ( String ) call.invoke( new Object[]("arg0","arg1"));
System.out.println("===============");
return res;
}
/**
* @param args
*/
public static void main(String[] args) {
try {
System.out.println(getResult());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
} catch (SOAPException e) {
e.printStackTrace();
}
}
}
‘叁’ 关于用C语言 写一个简单的WEB服务器 只需要简单的点击响应就行 另寻大神知道C语言 交流 请教
用select监听
‘肆’ 如何用c编写网页,使网页具有发送数据以及接收数据
网页发送数据接受数据间件职责
用C写网页编译exe文件修改cgi.
其输入输都根据标准输入输完LZ想用虚拟主机执行C语言编写CGI行CGI权限太执行任何操作所买虚拟主机肯定支持C语言编写CGI
CGI接口标准包括标准输入、环境变量、标准输三部
1.标准输入
CGI程序像其执行程序,通标准输入(stdin)Web服务器输入信息,Form数据,所谓向CGI程序传递数据POST意味着操作系统命令行状态执行CGI程序,CGI程序进行调试POST用,本文例,析CGI程序设计、程技巧
2.环境变量
操作系统提供许环境变量,定义程序执行环境,应用程序存取Web服务器CGI接口另外设置自些环境变量,用向CGI程序传递些重要参数CGIGET通 环境变量QUERY-STRING向CGI程序传递Form数据
3.标准输
CGI程序通标准输(stdout)输信息传送给Web服务器传送给Web服务器信息用各种格式,通纯文本或者HTML文本形式,我命令行状态调试CGI程序,并且输
面简单CGI程序,HTMLForm信息直接输We b浏览器
# include <stdio.h>
# include <stdib.h>
main()
{
int i , n ;
printf (〃Content type: text/plain\n\n〃);
n=0;
if(getenv(〃CONTENT-LENGTH〃))
n=atoi(getenv(CONTENT-LENGTH〃));
for (i=0;i<n;i++)
putchar(getchar());
putchar (′\n′);
fflush(stdout);
}
面程序作简要析
prinft (〃Content type :text/plain\n\n〃);
行通标准输字符串〃Content type :text/plain\n\n〃传送给Web服务器MIME信息,告诉Web服务器随输纯ASCII文本形式请注意信息两新行符,Web服务器需要实际文本信息始前先看见空行
if (getenv(〃CONTENT-LENGTH〃))
n=atoi (getenv(〃CONTENT-LENGTH〃));
行首先检查环境变量CONTENT-LENGTH否存Web服务器调用使用POSTCGI程序设置环境变量,文本值表示Web 服务器传送给CGI程序输入字符数目,我使用函数atoi() 环境变量值转换整数,并赋给变量n请注意Web服务器并文件结束符终止输,所检查环境变量CONTENT-LENGTH, CGI程序知道候输入结束
for (i=0;i<n;i++)
putchar(getchar());
行0循环(CONTENT-LENGTH-1)标准输入读每字符直接拷贝标准输,所输入ASCII形式送给Web服务器
通例,我CGI程序般工作程总结几点
1.通检查环境变量CONTENT-LENGTH,确定少输入;
2.循环使用getchar()或者其文件读函数所输入;
3.相应处理输入;
4.通〃Contenttype:〃信息,输信息格式告诉Web服务器;
5.通使用printf()或者putchar()或者其文件写函数,输传送给Web服务器
总,CGI程序主要任务Web服务器输入信息,进行处理,输结再送给Web服务器
‘伍’ 如何用c语言在windows环境下实现简单的web服务器
用C语言开发WEB,可以用C++BUILDER6,称ISAPI,一般人可能做不起来,有点麻烦;
唯一是速度很快,别人看不到源码,掌握了编程套路,也可以开发应用;
缺点:
1。不是解释性语言,做的WEB调试非常麻烦;现在做WEB开发的,用C#、JAVA较多;都是解释性的语言;
2。因为是.DLL的二进制代码,一般商业网站不给予运行的环境,因为网站服务器会被你可能搞瘫,安全性得不到保障;所以,你得自备网页服务器;
3。得不到技术支持,因为没几个人会这种开发;
‘陆’ 用c语言写一个网站给点思路
现在没有拿C语言写网站的,可以拿C写一个web服务器。
早期的时候,有C语言的网站,说白了就是,一个exe程序,输入是用户提交的请求,输出是网页,输出目标是远程的浏览器,这样子的。
‘柒’ c语言写的web服务器,用什么函数可以切断特定的ip地址的连接
int close(int fd);
close(client_socket);close(server_socket);
‘捌’ 如何用C语言开发一个通用web服务器
用C语言开发WEB,可以用C++BUILDER6,称ISAPI,一般人可能做不起来,有点麻烦;
唯一是速度很快,别人看不到源码,掌握了编程套路,也可以开发应用;
缺点:
1。不是解释性语言,做的WEB调试非常麻烦;现在做WEB开发的,用C#、JAVA较多;都是解释性的语言;
2。因为是.DLL的二进制代码,一般商业网站不给予运行的环境,因为网站服务器会被你可能搞瘫,安全性得不到保障;所以,你得自备网页服务器;
3。得不到技术支持,因为没几个人会这种开发;
‘玖’ C语言是否合适用于Web开发
用C语言开发WEB,我用C++BUILDER6做过,称ISAPI,一般人可能做不起来,有点麻烦;
唯一是速度很快,别人看不到你的源码,掌握了编程套路,也可以开发应用;
缺点:
1。不是解释性语言,做的WEB调试非常麻烦;现在做WEB开发的,用C#、JAVA较多;都是解释性的语言;
2。因为是.DLL的二进制代码,一般商业网站不给予运行的环境,因为网站服务器会被你可能搞瘫,安全性得不到保障;所以,你得自备网页服务器;
3. 得不到技术支持,没人邦你,因为没几个人会这种开发;
‘拾’ 用C语言进行web后端编程有什么不妥
如果你的目的只是开车,你是愿意买辆车开哪,还是造辆车开呢??? 后者不是你想的那么容易。。。C语言理论上什么都能干,但实际上又好像什么也做不了。。。。用C语言做高级编程总会绕很大一圈,原因是缺乏现成的工具,很多时候你不得不自己去做,但前提是你会不会做。。。。
C语言肯定可行,但你有什么眉目吗???