HttpWebRequest GET with Query 中的.NetCore 字符串列表
.NetCore list of string in HttpWebRequest GET with Query
我有一个 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 中,我期待字符串列表中的 mobile。
当我在我的其他项目中通过网络请求调用此 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;
}
}
请检查SmsResponse
class。哪种类型的 mobile
?
您获取移动参数的方式是正确的。
并且您还需要确定请求的格式url。
var query = $"apiKey={apiKey}&accountKey={accountKey}&userId={userId}&appId={appId}&message={message}&mobile={mobile}&isHighSpeed={false}";
1.如果手机类型是string
,你的代码应该如下:
2。如果手机类型是List<string>
,你的代码应该如下:
我有一个 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 中,我期待字符串列表中的 mobile。
当我在我的其他项目中通过网络请求调用此 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;
}
}
请检查SmsResponse
class。哪种类型的 mobile
?
您获取移动参数的方式是正确的。
并且您还需要确定请求的格式url。
var query = $"apiKey={apiKey}&accountKey={accountKey}&userId={userId}&appId={appId}&message={message}&mobile={mobile}&isHighSpeed={false}";
1.如果手机类型是string
,你的代码应该如下:
2。如果手机类型是List<string>
,你的代码应该如下: