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()
}
}
}
去看一下《Advanced Linux Programming》这本书吧,第11章讲的就是怎么用C语言实现一Http服务器。 这里有下载地址(英文的): http://www.advancedlinuxprogramming.com/alp-folder 英文看起来不顺的话可以上网找找有没有中文版的这本书,应该叫Linux高级编程吧~~~参考资料: http://www.advancedlinuxprogramming.com/alp-folderOK#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/ip.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <unistd.h>
#include <string.h>
int main(int argc,char *argv[])
{
int sockfd,new_socket
int sock_value
char buf[] = "hello! China!I Love You\n"
struct sockaddr_in client_
struct sockaddr_in server_
int SIZE = sizeof(struct sockaddr_in)
if(argc != 2){
fprintf(stderr,"The two number!\n")
exit(1)
}
if((sock_value = atoi(argv[1])) <0){
fprintf(stderr,"socket error!\n")
exit(1)
}
if((sockfd = socket(PF_INET,SOCK_STREAM, 0)) == -1){
perror("socket")
exit(1)
}
bzero(&server_,SIZE)
server_.sin_family = PF_INET
server_.sin_port = htons(sock_value)
server_.sin_addr.s_addr = INADDR_ANY
if(bind(sockfd,(struct sockaddr *)(&server_),SIZE) == -1){
perror("bind")
exit(1)
}
if(listen(sockfd, 12) == -1){
perror("listen")
exit(1)
}
printf("Waiting ... ...\n")
while(1){
if((new_socket = accept(sockfd,(struct sockaddr *)(&client_),&SIZE)) == -1){
perror("accept")
exit(1)
}
printf("The client IP is %s\n",inet_ntoa(client_.sin_addr))
printf("The socket is %d\n",ntohs(client_.sin_port))
if(write(new_socket,buf,strlen(buf)) == -1){
perror("write")
exit(1)
}
int my
char mybuf[1024]
if((my = read(new_socket, mybuf,1024)) == -1){
perror("read")
exit(1)
}
mybuf[my] = '\0'
printf("#++++#++++#:%s\n",mybuf)
close(new_socket)
}
close(sockfd)
return 0
}
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/ip.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <unistd.h>
int main(int argc,char *argv[])
{
int sockfd
int sock_value
char buf[1024]
char mybuf[] = "Linux\n"
int read_count
struct sockaddr_in client_
struct sockaddr_in server_
int SIZE = sizeof(struct sockaddr_in)
if(argc != 3){
fprintf(stderr,"The two number!\n")
exit(1)
}
if((sock_value = atoi(argv[2])) <0){
fprintf(stderr,"socket error!\n")
exit(1)
}
if((sockfd = socket(PF_INET,SOCK_STREAM, 0)) == -1){
perror("socket")
exit(1)
}
bzero(&client_,SIZE)
bzero(&server_,SIZE)
client_.sin_family = PF_INET
client_.sin_port = htons(52252)
client_.sin_addr.s_addr = INADDR_ANY
server_.sin_family = PF_INET
server_.sin_port = htons(sock_value)
server_.sin_addr.s_addr = inet_addr(argv[1])
if(connect(sockfd,(struct sockaddr *)(&server_),SIZE) == -1){
perror("connect")
exit(1)
}
if((read_count = read(sockfd,buf,1024)) == -1){
perror("read")
exit(1)
}
buf[read_count] = '\0'
printf("#----#----#:%s\n",buf)
if(write(sockfd, mybuf,6) == -1){
perror("write")
exit(1)
}
close(sockfd)
exit(0)
return 0
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)