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

Python028

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

package com.yudun.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语言实现文件自动下载并且解压1.自动下载 http://abc.com/test.rar 也可以下载FTP://abc.com/test.rar2.下载完成后自动解压到本路径下相同的文件夹里面,如:test.rar就是test文件夹3.如果test文件夹已经存在并且里面有内容就直接覆盖4.软件运行的时候提示用户输入存储路径5.下载过程中显示下载进度6.一个好的编程会在适当的地方加上适当的注释以上功能我已经用wget+winrar的做成批处理可以运行了,但是希望用C语言来实现先送50分,如果实现了在加送50分,不希望吧分数留给系统

希望采纳