2017-05-14 146 views
0

我一直在寻找这个问题,但非我的情况是相同的。C#WebAPI - 获取URL作为查询字符串传递参数

我有以下控制器:

public HttpResponseMessage GetMyService(int aType, [FromUri] string streamURL) 

streamURL是获取客户端发送一个完整的URL的参数。

客户端调用这样的服务: http://www.myservice.com/.../GetMyService/?aType=1&streamURL=http://www.client.com/?p1=100&p2=200

的问题是,在随后结束,我得到[FromUri]字符串streamURL参数作为http://www.client.com/P1 = 100而不& P2 = 200

这是已知的和合理的,但作为URL是在一开始切割我不能放置任何编码/解码功能。

任何帮助,将不胜感激..

THX

+0

客户端应在URL发送到您的服务之前对其进行编码,然后可以根据需要对其进行解码和使用。我不认为你的服务可以做很多事情,因为它不能区分新的查询字符串参数和从客户端发送的URL的延续。 – James

+0

'streamURL'值必须是Url被呼叫客户端编码 – Nkosi

+0

客户端如何提出请求?什么是客户?提供可用于重现问题的[mcve]。 – Nkosi

回答

3

客户端应发出请求,以符合HTTP协议规范,当streamURL查询字符串参数的适当URL encode值:

http://www.myservice.com/.../GetMyService/?aType=1&streamURL=http%3A%2F%2Fwww.client.com%2F%3Fp1%3D100%26p2%3D200 

所以基本上你在服务器端没有什么可以做的,你应该修复客户端。

相关问题