前端代码:
<
script language
=
"
javascript
"
type
=
"
text/javascript
"
>
// 创建XMLHTTP
function createXMLHTTP(){
var httpRequest;
try {
httpRequest = new XMLHttpRequest();
}
catch (e) {
try {
httpRequest = new ActiveXObject( " Msxml2.XMLHTTP " );
}
catch (e) {
try {
httpRequest = new ActiveXObject( " Microsoft.XMLHTTP " );
}
catch (e) {
return null ;
}
}
}
return httpRequest;
}
// 构造XML格式的文本
function createXML(){
var id = document.getElementById( " id " ).value;
var title = document.getElementById( " title " ).value;
var content = document.getElementById( " content " ).value;
var xml = ' <?xml version="1.0" encoding="utf-8" ?> ' ;
xml += ' <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> ' ;
xml += ' <soap:Body> ' ;
xml += ' <XmlService xmlns="http://tempUri.org/"> ' ;
// var xml = '';
xml += ' <id type="number"> ' + id + ' </id> ' ;
xml += ' <mytitle type="string"> ' + title + ' </mytitle> ' ;
xml += ' <mycontent type="string"> ' + content + ' </mycontent> ' ;
xml += ' </XmlService></soap:Body></soap:Envelope> ' ;
return xml;
}
// 构造JSON字符串
function createJSON(){
var id = document.getElementById( " id " ).value;
var title = document.getElementById( " title " ).value;
var content = document.getElementById( " content " ).value;
var json = ' {"id": ' + id + ' ,"mytitle":" ' + title + ' ","mycontent":" ' + content + ' "} ' ;
return json;
}
// 异步调用服务器
function callServer(postType) {
var xmlHttp = createXMLHTTP();
if (xmlHttp == null ) {alert( ' 浏览器不支持ajax ' ); return ;}
xmlHttp.onreadystatechange = function (){
if (xmlHttp.readyState == 4 ) {callBack(xmlHttp.responseText)}
}
var body;
var contentType;
var url;
if (postType == ' json ' ){
body = createJSON();
contentType = " application/json " ;
url = " /JsonXmlService.svc/JsonService " ;
}
if (postType == ' xml ' ){
body = createXML();
contentType = " text/xml " ;
url = " /JsonXmlService.svc/XmlService " ;
}
xmlHttp.open( " POST " , url, true );
xmlHttp.setRequestHeader( " Content-type " , contentType);
xmlHttp.send(body);
}
// 回调事件
function callBack(responseText){
alert(responseText);
}
< / script>
// 创建XMLHTTP
function createXMLHTTP(){
var httpRequest;
try {
httpRequest = new XMLHttpRequest();
}
catch (e) {
try {
httpRequest = new ActiveXObject( " Msxml2.XMLHTTP " );
}
catch (e) {
try {
httpRequest = new ActiveXObject( " Microsoft.XMLHTTP " );
}
catch (e) {
return null ;
}
}
}
return httpRequest;
}
// 构造XML格式的文本
function createXML(){
var id = document.getElementById( " id " ).value;
var title = document.getElementById( " title " ).value;
var content = document.getElementById( " content " ).value;
var xml = ' <?xml version="1.0" encoding="utf-8" ?> ' ;
xml += ' <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> ' ;
xml += ' <soap:Body> ' ;
xml += ' <XmlService xmlns="http://tempUri.org/"> ' ;
// var xml = '';
xml += ' <id type="number"> ' + id + ' </id> ' ;
xml += ' <mytitle type="string"> ' + title + ' </mytitle> ' ;
xml += ' <mycontent type="string"> ' + content + ' </mycontent> ' ;
xml += ' </XmlService></soap:Body></soap:Envelope> ' ;
return xml;
}
// 构造JSON字符串
function createJSON(){
var id = document.getElementById( " id " ).value;
var title = document.getElementById( " title " ).value;
var content = document.getElementById( " content " ).value;
var json = ' {"id": ' + id + ' ,"mytitle":" ' + title + ' ","mycontent":" ' + content + ' "} ' ;
return json;
}
// 异步调用服务器
function callServer(postType) {
var xmlHttp = createXMLHTTP();
if (xmlHttp == null ) {alert( ' 浏览器不支持ajax ' ); return ;}
xmlHttp.onreadystatechange = function (){
if (xmlHttp.readyState == 4 ) {callBack(xmlHttp.responseText)}
}
var body;
var contentType;
var url;
if (postType == ' json ' ){
body = createJSON();
contentType = " application/json " ;
url = " /JsonXmlService.svc/JsonService " ;
}
if (postType == ' xml ' ){
body = createXML();
contentType = " text/xml " ;
url = " /JsonXmlService.svc/XmlService " ;
}
xmlHttp.open( " POST " , url, true );
xmlHttp.setRequestHeader( " Content-type " , contentType);
xmlHttp.send(body);
}
// 回调事件
function callBack(responseText){
alert(responseText);
}
< / script>
前端还有几个HTML控件
<
div
>
文章标题: < input type ="text" id ="title" />< br />
文章内容: < textarea rows ="" cols ="" id ="content" ></ textarea >
< input type ="hidden" id ="id" value ="1" />< br />
< input type ="button" value ="以JSON方式提交" onclick ="callServer('json');" />
< input type ="button" value ="以XML方式提交" onclick ="callServer('xml');" />
</ div >
文章标题: < input type ="text" id ="title" />< br />
文章内容: < textarea rows ="" cols ="" id ="content" ></ textarea >
< input type ="hidden" id ="id" value ="1" />< br />
< input type ="button" value ="以JSON方式提交" onclick ="callServer('json');" />
< input type ="button" value ="以XML方式提交" onclick ="callServer('xml');" />
</ div >
后端代码
using
System;
using System.Text;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.ServiceModel.Channels;
using System.Xml.Serialization;
using System.Xml;
using System.IO;
namespace JsonXmlWcf
{
[ServiceContract(Namespace = "" )]
public interface IJsonXmlService
{
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
MyDataType JsonService( int id, string mytitle, string mycontent);
[OperationContract(Action = " * " )]
[WebInvoke(ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
Message XmlService(Message m);
}
public class JsonXmlService:IJsonXmlService
{
public MyDataType JsonService( int id, string mytitle, string mycontent)
{
return MyService(id, mytitle, mycontent, " 以JSON形式传递 " );
}
public Message XmlService(Message m)
{
return m;
}
private MyDataType MyService( int id, string mytitle, string mycontent, string info)
{
MyDataType MyData = new MyDataType();
MyData.Id = id;
MyData.MyTitle = string .Format( " {0}({1}) " , mytitle,info);
MyData.MyContent = mycontent;
return MyData;
}
}
[DataContract]
public class MyDataType
{
private int _id;
private string _mytitle;
private string _content;
[DataMember]
public int Id
{
get { return _id; }
set { _id = value; }
}
[DataMember]
public string MyTitle
{
get { return _mytitle; }
set { _mytitle = value; }
}
[DataMember]
public string MyContent
{
get { return _content; }
set { _content = value; }
}
}
}
using System.Text;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.ServiceModel.Channels;
using System.Xml.Serialization;
using System.Xml;
using System.IO;
namespace JsonXmlWcf
{
[ServiceContract(Namespace = "" )]
public interface IJsonXmlService
{
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
MyDataType JsonService( int id, string mytitle, string mycontent);
[OperationContract(Action = " * " )]
[WebInvoke(ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
Message XmlService(Message m);
}
public class JsonXmlService:IJsonXmlService
{
public MyDataType JsonService( int id, string mytitle, string mycontent)
{
return MyService(id, mytitle, mycontent, " 以JSON形式传递 " );
}
public Message XmlService(Message m)
{
return m;
}
private MyDataType MyService( int id, string mytitle, string mycontent, string info)
{
MyDataType MyData = new MyDataType();
MyData.Id = id;
MyData.MyTitle = string .Format( " {0}({1}) " , mytitle,info);
MyData.MyContent = mycontent;
return MyData;
}
}
[DataContract]
public class MyDataType
{
private int _id;
private string _mytitle;
private string _content;
[DataMember]
public int Id
{
get { return _id; }
set { _id = value; }
}
[DataMember]
public string MyTitle
{
get { return _mytitle; }
set { _mytitle = value; }
}
[DataMember]
public string MyContent
{
get { return _content; }
set { _content = value; }
}
}
}
遗留问题
messagecontract
WCF是怎么序列化,反序列化消息的
WCF是怎么序列化,反序列化消息的
一切消息的基类Message的成员
总结:这样搞WCF不是方法,应该系统的学医下
总结:这样搞WCF不是方法,应该系统的学医下