PHP访问.NET WebService的若干问题

今天遇到一个问题,商城的购物车接口用.NET WebService开发的,PHP也想要购物车的数据。于是我就像平时用ajax跨域请求那样直接给他链接,那么问题来了。

1、通过url访问完全没有问题

2、PHP后台代码Getjson方法访问不管怎样都获取不到数据。

ok,那么说说解决方法吧,他那边返回了一个安全机制的变量也就是说在链接后边加一个随机参数。

Eg:

    一般普通的访问方法:http://192.168.1.120:8090/web_service/UserControl.ashx?op=getShoping_Cart 

    添加一个随机参数的访问路径:http://192.168.1.120:8090/web_service/UserControl.ashx?op=getShoping_Cart &callback=随机参数(可空)

这样就解决了安全颜色

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Ec.Admin.BLL;
using Ec.Admin.DAL;
using Ec.Admin.Model;
using Ec.Common;
using ZK_ECommerce.PubMethod;
using System.Text;
using Ec.Product.Model;
using Ec.Product.BLL;

namespace ZK_ECommerce.web_service
{
    /// <summary>
    /// UserControl 的摘要说明
    /// </summary>
    public class UserControl : IHttpHandler
    {

       public static UsersBLL bll=new UsersBLL();
        public static UserDAL dal=new UserDAL();
        public void ProcessRequest(HttpContext context)
        {
           
            context.Response.ContentType = "text/plain";  
            context.Response.AddHeader("Access-Control-Allow-Origin", "*");            //解决跨域访问
            string urlHost= context.Request.Url.Authority;
            string action = context.Request["op"];
            string username = context.Request["username"];
            string pwd = context.Request["pwd"];
            string type = context.Request["type"];
            string userid=context.Request["userid"];
            string newpwd=context.Request["newpwd"];
            string oldpwd=context.Request["oldpwd"];
            string callBack = context.Request["callback"]; //获取临时变量

            string returnText=string.Empty;
         
            switch(action)
            {
                case "checkUserName":
                    returnText = checkUserName(username);
                    break;
                case "Register":
                    returnText = Register(username, pwd, type, urlHost);
                    break;
                case "GetMessageCode":
                    returnText=GetMessageCode(username,type);
                    break;
                case "EditPwd":
                    returnText = EditPwd(Convert.ToInt32(userid), newpwd, oldpwd);
                    break;
                case "getShoping_Cart":
                    returnText=getShoping_Cart();

                    returnText = callBack + "(" + returnText + ")";
                    break;
            }
            context.Response.Write(returnText);
        }

      



        public static string getShoping_Cart()
        {
            ProductImageBLL pImage = new ProductImageBLL();//商品图片相关操作

            Shopping_CartDAL dal = new Shopping_CartDAL();
            List<Shopping_Cart> list = dal.GetAllShopping_CartByUser_Name("wangdechong");
            StringBuilder sb = new StringBuilder();
            if(list.Count>0)
            {
                sb.Append("{\"list\":[");

                decimal tprice = 0;
                for (int i = 0; i < list.Count; i++)
                {

                    ProductImage prodImage = pImage.GetPrImageDetail(list[i].Product_Code).FirstOrDefault();
                    string imageUrl = string.Empty;
                    if (prodImage != null)
                    {
                        imageUrl = prodImage.Image_url;
                    }
                    sb.Append("{");

                    sb.Append("\"cart_id\": " + list[i].Id + ",");
                    sb.Append("\"goods_id\": \"" + list[i].Product_Code + "\",");
                    sb.Append("\"goods_name\": \"" + list[i].Product_Name + "\",");
                    sb.Append("\"goods_price\": " + list[i].Real_Price + ",");
                    sb.Append("\"goods_num\": " + list[i].Quantity + ",");
                    sb.Append(" \"goods_image\": \"" + imageUrl + "\",");
                    sb.Append(" \"goods_url\": \"/shop/item2.aspx?Product_Code=" + list[i].Product_Code + "\"");
                    if (i == (list.Count - 1))
                    {
                        sb.Append("}");
                    }
                    else
                    {
                        sb.Append("},");
                    }
                    tprice += list[i].Quantity * list[i].Real_Price;
                }
                sb.Append("],");
                sb.Append("\"cart_price\": \"" + tprice + "\",");
                sb.Append(" \"cart_num\": " + list.Count + "");
                sb.Append("}");
                return sb.ToString();
            }
            else
            {
              return   "{\"cart_num\":0}";
            }

           
        }


        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值