C# 创建WebService Android 调用 出现的问题SOAPAction和org.xmlpull.v1.XmlPullParserException

Android端调用代码基本是使用自这里 https://www.cnblogs.com/superpang/p/4911422.html

我遇到的问题:

1. 服务器未能识别http标头SOAPAction的值 的问题

https://blog.csdn.net/e_wsq/article/details/7268970

在开发C# asp.net 的时候给WebService类添加个Attribute

[SoapDocumentService(RoutingStyle=SoapServiceRoutingStyle.RequestElement)]


2. org.xmlpull.v1.XmlPullParserException:

expected: START_TAG {http://www.w3.org/2001/12/soap-envelope}Envelope (position:START_TAG <{http://schemas.xmlsoap.org/soap/envelope/}soap:Envelope>@1:208 in java.io.InputStreamReader@c08f7cf)

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapSerializationEnvelope.VER10);
SoapSerializationEnvelope的版本不选VER12
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个带有 `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 包。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值