soap 设置header 添加头元素 webservice wsdl

 
import java.net.URL;
 
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
 
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
 
import org.apache.axis.message.SOAPHeaderElement;
import javax.xml.soap.SOAPElement;
 
public class SendSMSZOP implements Runnable {
    public String phones = null;//adfbcc
    public String msg = null;//"测试";
 
    public int T_count=0;
    public int tname=0;
     
    public void run() {
//        System.out.println("[TN:"+tname+"] "+T_count);
        long s=System.currentTimeMillis();
        String r = send2ZOP(phones,msg);
        long e = System.currentTimeMillis();
        String time =(e-s)/1000==0?(e-s)+"毫秒":(e-s)/1000+"秒"+(e-s)%1000+"毫秒";
        System.out.println("[TN:"+ tname+"] P:"+phones+" ST->"+time+",R->"+r );
//        System.out.println("ST->"+time+",R->"+r );
    }
 
    private String send2ZOP(String phones, String msg) {
        String ret=null;
        try { 
           
            String Username = "dkfj";
            String Password = "123456";
            String nameSpace = "http://tempuri.org/";
            String endPoint = "http://1.6.5.1/friend_ws/Ses.asmx";
 
            Service service = new Service();
            Call call = null;
            call = (Call) service.createCall();
            call.setTargetEndpointAddress(new URL(endPoint));
 
            call.setOperationName(new QName(nameSpace, "SendMsg"));
            call.addParameter(new QName(nameSpace, "RNos"), XMLType.XSD_STRING,
                    ParameterMode.IN);
            call.addParameter(new QName(nameSpace, "Msg"), XMLType.XSD_STRING,
                    ParameterMode.IN);
            call.setReturnType(XMLType.XSD_STRING);
 
            call.setUseSOAPAction(true);
            call.setSOAPActionURI("http://tempuri.org/SendMsg");
 
            SOAPHeaderElement element = new SOAPHeaderElement(new QName(
                    nameSpace, "ValidHeader"));
            SOAPElement se = element.addChildElement("Username");
            se.addTextNode(Username);
            se = element.addChildElement("Password");
            se.addTextNode(Password);
            call.addHeader(element);
 
            ret = (String) call.invoke(new Object[] { phones, msg });
//            System.out.println(ret);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ret;
 
    }
     
}
 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,下面是一个带有 `SOAPAction` 报文的 Java 代码示例,用于调用 SOAP Web 服务: ```java import java.net.URL; import javax.xml.namespace.QName; import javax.xml.soap.SOAPConstants; import javax.xml.soap.SOAPHeader; import javax.xml.ws.BindingProvider; import javax.xml.ws.Service; import javax.xml.ws.soap.SOAPBinding; public class SoapClient { public static void main(String[] args) throws Exception { // 创建 Web 服务的 URL URL url = new URL("http://localhost:8080/myWebService?wsdl"); // 创建服务名称,命名空间为默认的"http://webservice.myapp.com/",服务名称为"myWebService" QName qname = new QName("http://webservice.myapp.com/", "myWebService"); // 创建服务 Service service = Service.create(url, qname); // 获取 Web 服务实现类 MyWebService webService = service.getPort(MyWebService.class); // 设置 SOAPBinding 的 SOAPAction 属性 BindingProvider bp = (BindingProvider) webService; SOAPBinding binding = (SOAPBinding) bp.getBinding(); binding.setSOAPAction("http://webservice.myapp.com/sayHello"); // 添加 SOAPHeader 报文 SOAPHeader header = binding.getSOAPHeader(); header.addChildElement(headerName).addTextNode(headerValue); // 调用 Web 服务方法 String result = webService.sayHello("world"); // 输出结果 System.out.println(result); } } ``` 在上面的示例中,我们使用 `javax.xml.ws.BindingProvider` 接口提供的 `getBinding()` 方法获取 `SOAPBinding` 对象,并使用 `setSOAPAction()` 方法设置了 `SOAPAction` 属性。另外,我们还使用 `getSOAPHeader()` 方法获取 `SOAPHeader` 对象,并使用 `addChildElement()` 方法添加了一个报文。需要注意的是,在添加报文之前,需要先创建一个 `SOAPHeaderElement` 对象并设置其名称和值。 同样,这里的 `MyWebService` 接口需要根据实际的 Web 服务接口进行修改,并且需要引入对应的 Web 服务 API 包。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值