一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Java調用.net的WebService - 阿善的日志 - 網易博客

 zilla 2011-03-02

這幾天公司需要做一個java和.net項目的整合,其中.net做了一個WebService,需要java來調用。本以為很容易的一個東西,結果弄了幾天才弄好。

最開始.net的Service代碼如下(黃色背景是自己增加的代碼):

//<%@ WebService Language="C#" Class="Service" Debug=true %>
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

namespace Service
{
 [WebService(Namespace="http://192.168.168.180/ss/Service.asmx")]

 /// <summary>
 /// Service1 的摘要說明。
 /// </summary>
 public class Service : System.Web.Services.WebService
 {
  public Service()
  {
   //CODEGEN: 該調用是 ASP.NET Web 服務設計器所必需的
   InitializeComponent();
  }

  #region 組件設計器生成的代碼
  
  //Web 服務設計器所必需的
  private IContainer components = null;
    
  /// <summary>
  /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
  /// 此方法的內容。
  /// </summary>
  private void InitializeComponent()
  {

  }

  /// <summary>
  /// 清理所有正在使用的資源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if(disposing && components != null)
   {
    components.Dispose();
   }
   base.Dispose(disposing);  
  }
  
  #endregion

  [WebMethod(Description="test")]
  public string GetTestQuestions(string TeacherName,string Subject)
  {
   return "11111";
  }

 }
}
=================

Java調用代碼:

 public static String GetTestQuestions(String TeacherName,String Subject){
  String result = "";
  try{
   Service service = new Service();
   Call call = (Call) service.createCall();
   call.setOperationName(new QName("", "GetTestQuestions"));
   call.addParameter("TeacherName", XMLType.XSD_STRING, ParameterMode.IN);
   call.addParameter("Subject", XMLType.XSD_STRING, ParameterMode.IN);
   call.setTargetEndpointAddress(new URL(
       "   result  = (String) call.invoke(new Object[] { TeacherName, Subject});   
   
  }catch(Exception e){
   e.printStackTrace();
  }
  
  return result;
 }
 public static void main(String args[]){
  System.out.println(UserWebService.GetTestQuestions("aaa", "HOMA060E"));

 }
--------------------

結果用java調用時總提示:faultString: 服務器未能識別 HTTP 標頭 SOAPAction 的值:。
--------------------

上網找了解決方法,最好修改的結果如下:

.net WebService代碼:

在webservicenamespace后面增加:

[SoapDocumentService(RoutingStyle=SoapServiceRoutingStyle.RequestElement)]

java調用錯誤變成了:faultString: 無法識別請求元素 <GetTestQuestions xmlns=''>。

崩潰了……

……

經過做java同學的不懈努力,終于找到解決方法:

java綠色背景代碼更改成:

call.setOperationName(new QName("終于得到期待的結果了。

總結一下原因:

.net的webservice指定了namespace:http://192.168.168.180/ss/Service.asmx,但是java調用時沒有指定,所以總提示找不到“<GetTestQuestions xmlns=''>”,如果我們仔細查看.net webservice的soap請求格式時會發(fā)現(xiàn),要求的格式是(注意藍色背景的文字)

SOAP

下面是一個 SOAP 請求和響應示例。所顯示的占位符需要由實際值替換。

POST /ss/service.asmx HTTP/1.1
Host: 192.168.168.180
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://192.168.168.180/ss/Service.asmx/GetTestQuestions"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:xsd="http://www./2001/XMLSchema" xmlns:soap="http://schemas./soap/envelope/">
<soap:Body>
    <GetTestQuestions xmlns="http://192.168.168.180/ss/Service.asmx">
<TeacherName>string</TeacherName>
<Subject>string</Subject>
</GetTestQuestions>
</soap:Body>
</soap:Envelope>

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    深夜福利欲求不满的人妻| 尹人大香蕉一级片免费看| 中文字日产幕码三区国产| 女生更色还是男生更色| 老司机精品视频免费入口| 大香蕉精品视频一区二区| 在线观看欧美视频一区| 欧美激情一区二区亚洲专区| 东京热加勒比一区二区| 中文字幕日韩欧美亚洲午夜 | 极品少妇一区二区三区精品视频| 欧美人妻一区二区三区| 亚洲熟女国产熟女二区三区| 国产精品久久精品毛片| 国产精品午夜性色视频| 欧美韩国日本精品在线| 一区二区不卡免费观看免费| 欧美小黄片在线一级观看| 日本欧美视频在线观看免费| 激情五月天免费在线观看| 黑人粗大一区二区三区| 国产精品二区三区免费播放心| 91精品国产综合久久不卡| 九九热精品视频免费在线播放| 日韩中文无线码在线视频| 夜色福利久久精品福利| 国产综合香蕉五月婷在线| 日本免费一区二区三女| 久久偷拍视频免费观看| 福利专区 久久精品午夜| 成年女人下边潮喷毛片免费| 成人国产一区二区三区精品麻豆| 成人三级视频在线观看不卡| 亚洲综合精品天堂夜夜| 日韩精品小视频在线观看| 午夜福利直播在线视频| 91偷拍裸体一区二区三区| 欧美日韩国产综合特黄| 日韩精品综合免费视频| 日本少妇中文字幕不卡视频| 欧美多人疯狂性战派对|