2016-03-05 158 views
1

花费小时数试图找出这一个。响应消息始终有一个404未找到的错误。任何帮助将不胜感激!C#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.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; 
     } 
    } 
} 

这里的API文档:https://backendless.com/documentation/users/rest/users_user_registration.htm

我跟着设在这里的文章:http://blogs.msdn.com/b/wsdevsol/archive/2013/02/05/how-to-use-httpclient-to-post-json-data.aspx

更新:我意识到了错误。注册网址不正确(错过了一个字符)。

+0

您可能想查看[Fiddler](http://www.telerik.com/fiddler),从这种调试东西中获取猜测。 –

+0

谢谢@Aydin Adn。我一定会试一试。 –

回答

1

我觉得自己的基本网址是越来越重复:

client.BaseAddress = new Uri(backendlessBase); 
// ... 
HttpResponseMessage response = await client.PostAsync(backendlessBase+signupUrl, theContent); 

你指定backendlessBase两次。如果您已使用BaseAddress指定基数,请不要在呼叫中再次指定它。

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

+0

我从PostAsync调用中删除了backendlessBase。它现在有signupUrl。仍然返回相同的错误。 –

+0

是的,我刚才意识到。感谢您指出,@Matti Virkkunen。 –

相关问题