背景

在与后台API接口对接时,如将网页Url作为参数请求数据时,如果是锚点参数,则会丢失。

锚点参数

请求通过WebRequest.Create创建一个WebRequest:

  var webRequest = WebRequest.Create(https://id.test.xxx.com/api/v1/auth/sso/url?redirectUrl=https://test.xxx.com/extend/userhelp#120); 

得到的webRequest,发现后面的锚点参数没有了。如下图:

获取的webRequest,Address和RequestUri中的Query参数,不包含锚点参数“#120”

正常的查询参数

我们换正常的查询参数,再试验如上步骤

通过WebRequest.Create创建一个WebRequest:

  var httpWebRequest = WebRequest.Create(https://id.test.xxx.com/api/v1/auth/sso/url?redirectUrl=https://test.xxx.com/extend/userhelp?id=120); 

得到的webRequest,查询Address和RequestUri中的Query参数。如下图:

后面的查询参数”?id=120″,数据正常。

总结

推测可能原因:WebRequest.Create方法中,过滤了#字符,导致#字符及之后数据丢失

临时解决方案:如果有锚点参数,并调用WebRequest.Create。那么在调用WebRequest.Create时Uri不添加锚点参数,调用完后再自行拼接错点参数

关键字:WebRequest.Create 锚点#参数丢失

版权声明:本文为kybs0原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/kybs0/p/9962003.html