C#HttpClient返回错误404未找到

C#HttpClient返回错误404未找到,c#,http-post,dotnet-httpclient,C#,Http Post,Dotnet Httpclient,花了好几个小时想弄明白这一点。响应消息始终有404未找到错误。任何帮助都将不胜感激 public static class BackendlessAPIHelper { internal static string appId = "my-app-id"; internal static string restSecret = "my-api-secret"; internal static string backendlessBase = "https://api.ba

花了好几个小时想弄明白这一点。响应消息始终有404未找到错误。任何帮助都将不胜感激

public static class BackendlessAPIHelper
{
    internal static string appId = "my-app-id";
    internal static string restSecret = "my-api-secret";
    internal static string backendlessBase = "https://api.backendless.com/";
    internal static string signupUrl = "v1/user/register";

    public static async Task<bool> UserSignup(string username, string password)
    {
        bool signupsuccessful = false;
        var client = new HttpClient();
        UserSignupBackendless newuser = new UserSignupBackendless { email = username, password = password };
        string newuserjson = JsonConvert.SerializeObject(newuser);

        try
        {
            client.BaseAddress = new Uri(backendlessBase);
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Add("application-id", BackendlessAPIHelper.appId);
            client.DefaultRequestHeaders.Add("secret-key", BackendlessAPIHelper.restSecret);
            client.DefaultRequestHeaders.Add("application-type", "REST");
            StringContent theContent = new StringContent(newuserjson, System.Text.Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync(backendlessBase+signupUrl, theContent);
            if (response.IsSuccessStatusCode)
            {
                signupsuccessful = true;
                return signupsuccessful;
            }
            else
                return signupsuccessful;
        }
        catch(Exception ex)
        {
            ex.ToString();
            return signupsuccessful;
        }
    }
}
公共静态类BackendlessAPIHelper
{
内部静态字符串appId=“我的应用程序id”;
内部静态字符串restSecret=“my api secret”;
内部静态字符串backendlessBase=”https://api.backendless.com/";
内部静态字符串signupUrl=“v1/user/register”;
公共静态异步任务UserSignup(字符串用户名、字符串密码)
{
bool signupsuccessful=false;
var client=新的HttpClient();
usersignupbackfundle newuser=newusersignupbackfundle{email=username,password=password};
字符串newuserjson=JsonConvert.SerializeObject(newuser);
尝试
{
client.BaseAddress=新Uri(backendlessBase);
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
client.DefaultRequestHeaders.Add(“应用程序id”,BackendlessAPIHelper.appId);
client.DefaultRequestHeaders.Add(“秘钥”,BackendlessAPIHelper.restSecret);
client.DefaultRequestHeaders.Add(“应用程序类型”、“REST”);
StringContent theContent=newstringcontent(newuserjson,System.Text.Encoding.UTF8,“application/json”);
HttpResponseMessage response=wait client.postsync(backendlessBase+signupUrl,内容);
if(响应。IsSuccessStatusCode)
{
signupsuccessful=true;
返回signupsuccessful;
}
其他的
返回signupsuccessful;
}
捕获(例外情况除外)
{
例如ToString();
返回signupsuccessful;
}
}
}
以下是API文档:

我跟随了这里的文章:


更新:我意识到了错误。注册URL不正确(缺少一个字符)。

我认为您的基本URL重复了:

client.BaseAddress = new Uri(backendlessBase);
// ...
HttpResponseMessage response = await client.PostAsync(backendlessBase+signupUrl, theContent);
您两次指定了
backendlessBase
。如果您已经使用
BaseAddress
指定了基地址,请不要在调用中再次指定它


另外,如果您仔细阅读文档,它是
users/register
,而不是
user/register

我认为您的基本URL重复了:

client.BaseAddress = new Uri(backendlessBase);
// ...
HttpResponseMessage response = await client.PostAsync(backendlessBase+signupUrl, theContent);
您两次指定了
backendlessBase
。如果您已经使用
BaseAddress
指定了基地址,请不要在调用中再次指定它


另外,如果您仔细阅读文档,它是
users/register
,而不是
user/register

我从PostAsync呼叫中删除了backendlessBase。它现在有了注册URL。仍然返回相同的错误。是的,我刚刚意识到。谢谢你指出这一点,@Matti Virkkunen。我从PostAsync呼叫中删除了backendlessBase。它现在有了注册URL。仍然返回相同的错误。是的,我刚刚意识到。谢谢你指出这一点,@Matti Virkkunen。你可能想检查一下,从调试这样的东西中去掉猜测。谢谢@Aydin Adn。我一定会尝试一下。你可能想检查一下,从这样的调试工作中去掉猜测。谢谢@Aydin Adn。我一定要试一试。