'Предоставлен недопустимый URI запроса. URI запроса должен быть либо абсолютным URI, либо должен быть установлен BaseAddress. ' - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь использовать REST API из приложения форм xamarin, используя следующий код. однако по какой-то странной причине я получаю ошибку недопустимого URI. Я также пробовал использовать абсолютный путь в методе PostAsyn c, но ошибка все еще сохраняется. Может ли кто-нибудь помочь мне в этом, пожалуйста?

HttpClient client = new HttpClient(); 
string baseAdd = @"http://localhost:9000/";

    public async void GenerateAPIToken()
    {

        string tsResult = "";
        try
        {

            Token token = new Token();
            //GET TOKEN
            client.BaseAddress = new Uri(baseAdd);
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            HttpRequestMessage msg = new HttpRequestMessage();
            msg.Content = new StringContent(@"{""username"":""admin"",""password"":""admin123""}");


            HttpResponseMessage response = await client.PostAsync(client.BaseAddress+"token/generate.php", msg.Content);


            if (response.StatusCode == HttpStatusCode.OK)
            {
                HttpContent cnt = response.Content;
                tsResult = await cnt.ReadAsStringAsync();
                token = JsonConvert.DeserializeObject<Token>(tsResult);
                App.apiToken = token.Document.AccessToken;
            }

        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }

    }

1 Ответ

1 голос
/ 02 августа 2020

Похоже, вы устанавливаете BaseAddress и отправляете абсолютный URI. Когда установлен BaseAddress, он добавляется в качестве префикса к URI. Вы должны либо установить BaseAddress и отправить относительный URI, либо отправить абсолютный URI, не задавая базовый адрес. см. https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient.baseaddress?view=netcore-3.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...