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>,你的代码应该如下: