请耐心看,我尽量简化。
我要做一个服务,连接某系统sqlserver数据库,封装出新的服务提供给php系统使用。
我的返回是序列化json格式的数据,但是webservice返回的结果外层有类似<string>的xml标记。
他们希望的是服务端返回纯json数据,不带xml封装的。但是这个貌似不能实现。
我想知道除了webservice还有什么微软技术能实现web服务?wcf可以不?
或者做过php的知道如何处理呢?他们按照xml处理也得不到数据。要求php端不使用soap,而是直接post。c#webservicewcfphpsoap

解决方案 »

  1.   

    按理说php应该是有xml的处理能力的,对xml进行正则匹配或者其他的应该是没问题的
    不过他们的需求可能是针对一个特定的方法,请求一个路径
    比如说:http://xxx.com/xxx.ashx?method=getData
    通过这种方式,调用getData方法
    而getData直接返回数据:
    public void getData()
    {
       Response.Write("xxxxx");
    }
    这样客户端可以得到xxxxx字符
      

  2.   

    用asp.net再包装一层,调用返回的xml,过滤掉外侧标记后的字符串直接写response的textstream。
      

  3.   

    他们得到的变量如果echo出来是只显示我return的值(无xml节点显示),但是如果用strlen验证的话,长度是超长的,是带有xml的,具体操作我也不请才,反正他们无法取出来。
    在服务asmx里面可以用不了Response吧?
      

  4.   

    大大,如果用asp.net再包一层?那我php是该调用谁?调用asp.net的话,参数怎么个给法= =?
      

  5.   

    使用WCF或WebService都可以.这个数据中间需要有类做中间传输,保存客户端传送到数据访问层,提供存储.
    数据返回时,可以直接返回类,至少WCF这样做没有问题,WebService我是没有试过,如果不可以返回类,那么就先将类转换成xml,再返回客户端. 如果数据访问层返回已经是类,那么直接转换成JSON,如果返回来的是xml,先把xml转换成类,再转换成JSON,返回给前台,用中间文件ashx
      

  6.   

    看着有点迷糊。我返回的是一个list<T>序列化的json。
    JavaScriptSerializer json = new JavaScriptSerializer();
                return json.Serialize(Lst);
    您说的wcf直接返回类,php能识别么?其实我觉得xml也可以,但是php那边要求返回纯json。
    ashx能够做到这种情况?我不了解ashx
      

  7.   

    大大,如果用asp.net再包一层?那我php是该调用谁?调用asp.net的话,参数怎么个给法= =?
    一样的嘛,参数传给它,它在转发给web service。
      

  8.   

    大大,如果用asp.net再包一层?那我php是该调用谁?调用asp.net的话,参数怎么个给法= =?
    一样的嘛,参数传给它,它在转发给web service。
    都搞糊涂了,我刚才测试了一下,是可以的,谢谢了,但是我有个疑惑。
    难道自家的技术就不需要那么复杂了?
    我用asp.net调用webservice服务的返回值,得到的string是没有xml外壳的。我擦。
    那么相当于我asp。net只做取值再response就好了,都不需要解析xml。
      

  9.   

    貌似看懂了,你的意思是说用ashx作为中间转换,把结果统一为json再返回是吧?就是版主说的用asp.net封装一层类似的是吧?
      

  10.   

    大大,如果用asp.net再包一层?那我php是该调用谁?调用asp.net的话,参数怎么个给法= =?
    一样的嘛,参数传给它,它在转发给web service。
    新问题,用了一个aspx页面做中转,加入返回的response.write("aaa");
    web打开是aaa,但是我用curl抓出来的文本是如下 
    C:\Users\Administrator>curl http://localhost/wy/RunService.aspx?mo=1
    aaa<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
    <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><titl
    e></title></head>
    <body>
        <form method="post" action="RunService.aspx?mo=1" id="form1">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTEzNDM3
    NzkxOWRkgaCcshgK00+nMn/KAB+GRrdhl5bLwT2eYE1j1ypbQpk=" />    <div>    </div>
        </form>
    </body>
    </html>C:\Users\Administrator>
    他后面跟了一个页面啊。天哪。
      

  11.   

    那你就直接写个ashx呗,干嘛要用webservice.
      

  12.   

    看到有三位都说了ashx,我就现学现用,真的实现了纯JSON返回。十分感谢各位。