【问题标题】:passing web url as parameter in web service using wcf in c#在 c# 中使用 wcf 将 web url 作为参数传递给 web 服务
【发布时间】:2015-04-17 07:42:11
【问题描述】:

这里我想使用 WCF 在我的 Restful Web 服务中将视频 url 作为参数传递。我在表格中有视频 url 列。在插入数据时,我也想插入视频网址。在网络服务中,我将视频网址作为参数发送。问题是,虽然传递参数视频 url 由“\”或“/”组成。由于这些符号,我无法通过 Web 服务插入数据。请建议我如何转义“\”或“/”符号或其他方式将视频 url 作为参数传递给 restful web 服务。

[OperationContract()] 
[WebInvoke(UriTemplate = "AddPOI/{POICTG}/{Name}/{Description}/{BestTimetoVisit}/{TimeFrom}/{TimeTo}/{Add‌​ress}/{Contact_No}/{Lattitude}/{Longitude}/{Altitude}/{Accuracy}/{Image}/{Video_U‌​RL}/{Active_Inactive_Flag}", Method = "GET", ResponseFormat = WebMessageFormat.Json)] 
bool AddPOI(string POICTG, string Name, string Description, string BestTimetoVisit, string TimeFrom, string TimeTo, string Address, string Contact_No, string Lattitude, string Longitude, string Altitude, string Accuracy, string Image, string Video_URL, string Active_Inactive_Flag);

【问题讨论】:

  • 请发布在尝试插入作为参数传递的视频 URL 时遇到的异常情况?
  • 我没有得到任何异常。当我通过添加“-”来运行该 wcf 时,它正在移动到代码(通过添加断点已知)。如果我添加路径,那么它不会编码。
  • 您能否发布一些关于您的 WCF 服务外观的示例代码?此外,当传递视频 URL 时,插入是否会发生在数据库中,如果是这样,那么该值如何保存为?请发布您在传递视频 URL 和不带“\”时观察到的差异
  • [OperationContract()] [WebInvoke(UriTemplate = "AddPOI/{POICTG}/{Name}/{Description}/{BestTimetoVisit}/{TimeFrom}/{TimeTo}/{Address}/{ Contact_No}/{Lattitude}/{Longitude}/{Altitude}/{Accuracy}/{Image}/{Video_URL}/{Active_Inactive_Flag}", Method = "GET", ResponseFormat = WebMessageFormat.Json)] bool AddPOI(string POICTG , string Name, string Description, string BestTimetoVisit, string TimeFrom, string TimeTo, string Address, string Contact_No, string Lattitude, string Longitude, string Altitude, string Accuracy, string Image, string Video_URL, string Active_Inactive_Flag);
  • 这是我正在使用的代码,我在这里将视频 URL 作为参数传递

标签: c# wcf rest


【解决方案1】:

服务:

[OperationContract()]
[WebInvoke(UriTemplate = "AddPOI", ResponseFormat = WebMessageFormat.Json)]
bool AddPOI(POIObject objPOIObject);

    [DataContract]
    public class POIObject
    {
        [DataMember]
        public string POICTG { get; set; }
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Description { get; set; }
        [DataMember]
        public string BestTimeToVisit{ get; set; }
        [DataMember]
        public string TimeFrom { get; set; }
        [DataMember]
        public string TimeTo { get; set; }
        [DataMember]
        public string Address { get; set; }
        [DataMember]
        public string Contact_No { get; set; }
        [DataMember]
        public string Lattitude { get; set; }
        [DataMember]
        public string Longitude { get; set; }
        [DataMember]
        public string Altitude { get; set; }
        [DataMember]
        public string Accuracy { get; set; }
        [DataMember]
        public string Image { get; set; }
        [DataMember]
        public string Video_URL { get; set; }
        [DataMember]
        public string Active_Inactive_Flag { get; set; }

}

现在我来自 Fiddler 的原始请求如下所示:

POST http://localhost/XMLService/AddPOI HTTP/1.1
User-Agent: Fiddler
content-type: application/json
Host: localhost:85
Content-Length: 361


 { "POICTG":"1", "Name":"Hello", "Description":"Hi, How are you", "BestTimetoVisit":"Jan", "TimeFrom":"06-12-2015", "TimeTo":"06-13-2015", "Address":"ABC", "Contact_No":"9966555522", "Lattitude":"12.2315332", "Longitude":"12.356465", "Altitude":"2535", "Accuracy":"2365", "Image":"image.png", "Video_URL":"http://www.google.com", "Active_Inactive_Flag":"1" } 

回复如下:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 4
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
Set-Cookie: ASP.NET_SessionId=kz1wx05h4lylpprrxplokl2t; path=/; HttpOnly
X-AspNet-Version: 4.0.30319
Date: Mon, 27 Apr 2015 11:36:12 GMT

true

我已经将所有参数包装到一个简单的类对象中,然后执行一个帖子。希望有帮助

【讨论】:

  • 我和你做的一样。但我面临同样的问题。我认为将对象数据分配给应用程序中的实体存在问题。请告诉我如何将对象数据分配给实体,我必须通过该实体将值传递给 Query 才能执行。
  • “将对象数据分配给应用程序中的实体”是什么意思?如果您收到 200 响应,那么您的服务一切正常
  • 是的,我明白了......谢谢......现在当我从提琴手运行时它正在运行但如果我通过 Angular Js 传递值它显示“方法不允许”为什么是就这样.....??????
  • 你能发布你从 angularjs 调用代码的样子吗?当从 angularjs 进行调用时,还要在 fiddler 中捕获请求,并将其与 fiddler 中的请求进行比较,以了解问题所在
  • this.post = function (Poi) { var request = $http({ //method: "POST", //url: "IP/TIS/Service1.svc/AddPOI", //data: Poi type: " POST", url: "IP/TIS/Service1.svc/AddPOI", data: Poi, contentType: "application/json; charset=utf-8", dataType: "json", });退货请求; }
猜你喜欢
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2012-04-15
  • 2011-02-20
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 2019-05-19
相关资源
最近更新 更多