您的位置:首页 > 编程语言 > PHP开发

PHP访问.NET WebService的若干问题

2015-12-14 12:50 609 查看
今天遇到一个问题,商城的购物车接口用.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;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  web service php ajax