.NetCore HttpWebRequest GET 中带有查询的字符串列表
Posted
技术标签:
【中文标题】.NetCore HttpWebRequest GET 中带有查询的字符串列表【英文标题】:.NetCore list of string in HttpWebRequest GET with Query 【发布时间】:2021-10-18 04:13:54 【问题描述】:我有一个 GET API,其中期望来自查询参数的字段。 看起来像这样
public List<Sms> SendSms([FromQuery] string apiKey, [FromQuery] string accountKey, [FromQuery] string appId,[FromQuery] string userId, [FromQuery] string message, [FromQuery] bool isHighSpeed = false,[FromQuery] List<string> mobile)
// do something
在此 API 中,我希望在字符串列表中使用移动设备。
当我在我的另一个项目中通过网络请求调用这个 api 时。
我正在添加手机号码,但它不需要任何东西并使用System.Collections.Generic.List'1[System.String]
之类的东西
那。
我不知道如何在 httpweb 请求的查询参数中给出字符串列表。
这是网络请求:
public virtual bool SendSms(SmsResponse sms)
try
var message = sms.message;
var mobile = sms.mobile;
var apiKey = Config.GetSection("Sms:apiKey").Value;
var userId = Config.GetSection("Sms:userId").Value;
var accountKey = Config.GetSection("Sms:accountKey").Value;
var appId = Config.GetSection("fusionAuth:Client_Id").Value;
var query = $"apiKey=apiKey&accountKey=accountKey&userId=userId&appId=appId&message=message&mobile=mobile&isHighSpeed=false";
string createreq = string.Format($"Config.GetSection("Sms:Url").Get<string>()SMS/SendSms?query");
HttpWebRequest request = WebRequest.Create(createreq) as HttpWebRequest;
request.Method = "GET";
request.ContentType = "application/json";
request.Accept = "application/json; charset=utf-8";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
if (response.StatusCode != HttpStatusCode.OK)
throw new Exception(String.Format("Server error (HTTP 0: 1).", response.StatusCode, response.StatusDescription));
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
List<SmsResponse> Data = JsonConvert.DeserializeObject<List<SmsResponse>>(responseFromServer);
if (string.IsNullOrEmpty(Data[0].extMessageId))
return false;
return true;
catch (WebException ex)
var resp = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
return false;
【问题讨论】:
我认为问题应该是 Listquery
的值?请查看SmsResponse
类。 mobile
是哪一种?
获取移动参数的方式是正确的。
而且你还需要确定请求url的格式。
var query = $"apiKey=apiKey&accountKey=accountKey&userId=userId&appId=appId&message=message&mobile=mobile&isHighSpeed=false";
1.如果手机的类型是string
,你的代码应该如下:
2。如果手机类型是List<string>
,你的代码应该如下:
【讨论】:
以上是关于.NetCore HttpWebRequest GET 中带有查询的字符串列表的主要内容,如果未能解决你的问题,请参考以下文章
WebClient, HttpClient, HttpWebRequest ,RestSharp之间的区别与抉择
WebClient, HttpClient, HttpWebRequest ,RestSharp之间的区别与抉择
C#.NET 4.0 - HttpWebRequest.GetRepsonse() 无法访问 Web 服务
C#使用HttpWebRequest发送数据和使用HttpWebResponse接收数据的一个简单示例