背景

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

锚点参数

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

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

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

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

正常的查询参数

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

通过WebRequest.Create创建一个WebRequest:

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

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

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

总结

原因:WebRequest.Create方法中,锚点参数会在另一属性中出现,

如果有锚点参数,并调用WebRequest.Create,临时解决方案:

  1. 在调用WebRequest.Create时Uri不添加锚点参数,调用完后再自行拼接锚点参数。
  2. 从WebRequest.RequestUri.Fragment中获取锚点参数,重新组合成Uri.

值得注意的是,生成Request后,请求服务器API接口,默认后台是不会处理锚点信息的。所以如果需要支持锚点,需要API接口支持。

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

C# WebRequest.Create 锚点“#”字符问题的更多相关文章

  1. 详解C#泛型(二) 获取C#中方法的执行时间及其代码注入 详解C#泛型(一) 详解C#委托和事件(二) 详解C#特性和反射(四) 记一次.net core调用SOAP接口遇到的问题 C# WebRequest.Create 锚点“#”字符问题 根据内容来产生一个二维码

    详解C#泛型(二)   一.自定义泛型方法(Generic Method),将类型参数用作参数列表或返回值的类型: void MyFunc<T>() //声明具有一个类型参数的泛型方法 { ...

  2. C#: Create a WebRequest with HTTP Basic Authentication

    http://blog.csdn.net/huangyaoshifog/article/details/4470675 myReq = WebRequest.Create(url); string u ...

  3. c#利用WebClient和WebRequest获取网页源代码的比较

    前几天举例分析了用asp+xmlhttp获取网页源代码的方法,但c#中一般是可以利用WebClient类和WebRequest类获取网页源代码.下面分别说明这两种方法的实现. WebClient类获取 ...

  4. WebRequest使用

    // 待请求的地址 string url = "http://www.cnblogs.com"; // 创建 WebRequest 对象,WebRequest 是抽象类,定义了请求 ...

  5. C#、.NET网络请求总结(WebClient和WebRequest)

    1.关于WebClient第三方的封装,支持多文件上传等 using System; using System.Collections.Generic; using System.Text; usin ...

  6. c#利用WebClient和WebRequest获取网页源代码

    C#中一般是可以利用WebClient类和WebRequest类获取网页源代码.下面分别说明这两种方法的实现.   WebClient类获取网页源代码   WebClient类   WebClient ...

  7. .NET自动字符编码识别程序库 NChardet

    什么是NChardet NChardet是mozilla自动字符编码识别程序库chardet的.NET实现,它移植自jchardet,chardet的java版实现,可实现对给定字符流的编码探测. N ...

  8. WebRequest使用(车)

    // 待请求的地址 string url = "http://www.cnblogs.com"; // 创建 WebRequest 对象,WebRequest 是抽象类,定义了请求 ...

  9. Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)

    Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer   Advanced Installer :Free for 30 da ...

随机推荐

  1. 原生wcPop.js消息提示框(移动端)、内含仿微信弹窗效果

    wcPop.js移动端消息对话框插件是之前的wxPop.js的升级版,优化了js和css,并且新增了仿微信弹窗效果, 是一款含有多种情景模式的原生模态消息对话框代码,可用于替代浏览器默认的alert弹 ...

  2. 关于throw、throws、try--catch的问题

    首先回顾概念 throws表示出现异常的一种可能性,并不一定会发生这些异常 throw则是抛出了异常,执行throw则一定抛出了某种异常 try--catch try语句用大括号{}指定了一段代码,该 ...

  3. ActiveMQ详解

    Apache ActiveMQ介绍 使用MQ的场景 ActiveMQ的安装 收发消息的简单实现 ActiveMQ内部实现 queue和topic 消息持久化 kahadb原理 最关键的6个配置 Apa ...

  4. 蚂蚁通讯框架SOFABolt之私有通讯协议设计

    前言 SOFABolt 是蚂蚁金融服务集团开发的一套基于 Netty 实现的网络通信框架. 为了让 Java 程序员能将更多的精力放在基于网络通信的业务逻辑实现上,而不是过多的纠结于网络底层 NIO ...

  5. 前端笔记之Canvas

    一.Canvas基本使用 Canvas是HTML5的画布,Canvas算是“不务正业”的面向对象大总结,将面向对象玩极致. 算法为王!就是说canvas你不会,但是算法好,不怕写业务,不怕代码量,只要 ...

  6. [PHP] 使用反射实现的控制反转

    搬家进程中反射实现控制反转,样做的好处是可以通过配置项动态的控制下面那个类的属性 1.$this->getObject($class, $config->getConfig('param' ...

  7. 访问者模式 Visitor 行为型 设计模式(二十七)

    访问者模式 Visitor    <侠客行>是当代作家金庸创作的长篇武侠小说,新版电视剧<侠客行>中,开篇有一段独白:  “茫茫海外,传说有座侠客岛,岛上赏善罚恶二使,每隔十年 ...

  8. Accesss数据库的DBhelper类(带分页)

    首先配置web.config,使配置文件连接access数据库: <connectionStrings> <add name="DBConnection" con ...

  9. gulp+ThinkPHP配置

    gulp+ThinkPHP配置 gulp+ThinkPHP配置 目录结构: html |-src 开发目录 |-Home 静态页面 |-Public 静态资源目录 |-dist 生产目录 |-Home ...

  10. Maven项目pom文件设置JDK版本

    maven项目创建之后有时候默认设定了java的低版本,每次导入项目或者更新maven的时候可能或出现一些报错,在pom.xml设定版本免除这个问题 <build> <finalNa ...