用户登录
用户注册

分享至

c# JSON返回格式的WEB SERVICE

  • 作者: 小小小姐好白
  • 来源: 51数据库
  • 2021-10-19
我贴c#的代码:
复制代码 代码如下:

namespace iwebs.webs{
using system;
using system.web.services;
using system.web.services.protocols;
using system.xml;
using system.xml.xpath;
using system.web.script.services;
using iwebs;
[webservice (name="cjjer",description="一个返回用户资料,订单信息的webservice,请求的手机号码最长12位",namespace="http://www.cjjer.com/webs/")]
[system.web.script.services.scriptservice]
public class cjjer:webservice{
public class reqheader : soapheader{
public string username;
public string password;
}
public reqheader header;
[webmethod (description ="输入单个用户的int值id,返回用户类",messagename="getuser",enablesession = false)]
[scriptmethod(responseformat = responseformat.json)]
[soapheader("header", direction = soapheaderdirection.in)]
public model.member getuser(int uid){
this.chechheader(header);
return (new dal.members()).getbyid(uid);
}
[webmethod (description ="输入某个用户的手机号码,返回用户类",messagename="getuserbymobile",enablesession = false)]
[scriptmethod(responseformat=responseformat.json)]
[soapheader("header", direction = soapheaderdirection.in)]
public model.member getuserbymobile(string umobile){
this.chechheader(header);
return (new dal.members()).getbymobile(umobile);
}
[webmethod (description ="输入某个用户的手机号码,返回订单数组",messagename="getordersbymobile",enablesession = false)]
[scriptmethod(responseformat=responseformat.json)]
[soapheader("header", direction = soapheaderdirection.in)]
public iwebs.model.order[] getordersbymobile(string umobile){
this.chechheader(header);
return (new dal.orders()).getbymobile(umobile,-365);
}
[webmethod (description ="输入某个用户的id,返回订单数组",messagename="getordersbyuserid",enablesession = false)]
[scriptmethod(responseformat=responseformat.json)]
[soapheader("header", direction = soapheaderdirection.in)]
public iwebs.model.order[] getordersbyuserid(int uid){
this.chechheader(header);
return (new dal.orders()).getordersbyuserid(uid,-365);
}
private void chechheader(reqheader header){
if (header != null){
if (header.mustunderstand)
{
string username = header.username;
string password = header.password;
if (username == "cjjer" && password == "000000")
{
return ;
}
else
{
throw new applicationexception (string.format("用户名[{0}]或密码[{1}]错误",username,password));
}
}
else
{
throw new applicationexception ("包含用户名和密码信息的消息头格式不正确");
}
}
else
{
throw new applicationexception ("请提交包含用户名和密码信息的消息头");
}
}
};
}

注意的是,这个请求必须要请求提交soapheader,其中的[system.web.script.services.scriptservice]
这句是利用ajax.net处理json请求的,如果不需要就免了,如果需要的话下载ajax.net,然后在bin里面放system.web.extensions.design.dll,system.web.extensions.dll,按照ajax.net默认的那个web.config修改你的web.config,在浏览器中查看*.asmx文件,如果使用?wsdl可以看到xml的wsdl的话第一步算成功了。
其中注意的是:
web.config
在httphandler中有两个节点很重要:
复制代码 代码如下:

<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="system.web.script.services.scripthandlerfactory, system.web.extensions, version=3.5.0.0, culture=neutral, publickeytoken=31bf3856ad364e35"/>

这两句声明让scripthandlerfactory处理webservice请求。
利用ajax请求的时候 http_request.setrequestheader("content-type", "application/json");
加上这句默认的返回的就是json。
附上web.config和相关的dll文件吧:

在c#代码创建的时候道理一样。
软件
前端设计
程序设计
Java相关