【问题标题】:How can i pass an object and a string to webservice using post request using angularjs如何使用 angularjs 使用 post 请求将对象和字符串传递给 web 服务
【发布时间】:2014-11-16 12:38:45
【问题描述】:

我是 angularjs 的新手,我需要将数据发布到 Web 服务,该服务接受两个参数,一个是对象列表,另一个是 securityToken,

这是我的代码,

$scope.saveCompany=function(){

      // alert("Save Company!!!");

     var Companies={
        Code: 'testMartin',
        Name: 'company1',
        CompanyType : 'Tenant',
        email : 'test@yaoo.com',
        Fax : 4235353,
        ParentID : 1

    };
    $http({
        url:'http://localhost/masters/smstools.svc/json/SaveComapnies',
        dataType: 'json',
        method: 'POST',
        data: $.param(Companies),
        headers: {
            "Content-Type": "text/json",
        }

    }).success(function(response){
        alert ("Success");
    }).error(function(error){
        alert ("Save company!");
    });

如何将安全令牌与公司对象作为单独的参数传递。我的服务接受这样的参数,

 public List<CompanyProfile> Save(List<CompanyProfile> CompanyList,string securityToken)

【问题讨论】:

    标签: html angularjs web-services


    【解决方案1】:

    由于这是一个休息调用,你只有 3 个地方可以传递参数数据:

    有了Post,它就会成为body的一部分,看来这就是你现在第一个参数占用的地方了。

    使用 Get 并将参数添加到 URL /json/SaveComapnies/mySecParam 或通过查询字符串(如 /json/SaveComapnies?sec=mySecParam),但这并不安全,也不推荐用于安全设置。

    使用 header 来自 Angular Post:

        **headers: {
            "Content-Type": "text/json",
            "mySecVar": "mySecParamValue"
        }**
    

    服务器端版本:

    public List<CompanyProfile> Save(List<CompanyProfile> CompanyList){
    
        WebOperationContext current = WebOperationContext.Current;
        WebHeaderCollection headers = current.IncomingRequest.Headers;
    
        if (headers["mySecVar"] != null){
             // do something
        }
    }
    

    您可以在此处阅读更多信息:

    How to read HTTP request headers in a WCF web service?

    【讨论】:

    • 你能发布完整的邮政编码吗?我还是没有得到答案!
    • 你的服务器端技术是WCF还是WebApi?
    • 这是 wcf,我已经发布了接受列表和字符串的接口
    • @Sajeetharan 我刚刚放置了一个快速示例代码,让您了解使用标题的必要条件
    • 问题是我无法更改服务,因为它已经托管。如果您愿意,我可以发布服务代码,感谢您的帮助
    【解决方案2】:

    您能否在后端分享更多信息?

    如果它实际上是一个 REST 后端,我宁愿使用有角度的 $resource

    https://docs.angularjs.org/api/ngResource

    如果你想传递 json 对象和字符串作为 post 参数你应该坚持 $http 文档

    https://docs.angularjs.org/api/ng/service/$http

    在帖子示例中,您可以传入两个参数:

    $http.post('/yourEndpoint', {jsonObj:yourCompaniesObj, secKey:yourSecretToken})....(sucess etc)
    

    从我的单元格输入 - 如果您需要更多代码示例,请告诉

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多