2011-03-21 106 views
0

想知道您是否可以提供幫助。我在.net 3.5框架中使用c#。我試圖通過tenderapp api創建用戶的地方。每次嘗試時,我都會收到一個'遠程服務器返回錯誤:(422)無法處理的實體。 」。通過tenderapp api創建新用戶

我用下面的代碼:

string username = "Eddie"; 
string password = "password"; 
string tenderUrl = string.Format("https://{0}:{1}@api.tenderapp.com/sitekey/users", username, password); 

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(tenderUrl); 
request.Accept = "application/vnd.tender-v1+json"; 
request.ContentType = "application/json"; 
request.Method = "POST"; 
string postData = "{'email':'***@eddie.com','password':'test','password_confirmation':'test'}"; 


byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
request.ContentLength = byteArray.Length; 

Stream dataStream = request.GetRequestStream(); 
dataStream.Write(byteArray, 0, byteArray.Length); 
dataStream.Close(); 

WebResponse response = request.GetResponse();//error returned here 

Console.WriteLine(((HttpWebResponse)response).StatusDescription); 

dataStream = response.GetResponseStream(); 
StreamReader reader = new StreamReader(dataStream); 
string responseFromServer = reader.ReadToEnd(); 
Console.WriteLine(responseFromServer); 

reader.Close(); 
dataStream.Close(); 
response.Close(); 

如果POSTDATA串導致錯誤不知道。欲瞭解更多信息,請參閱https://help.tenderapp.com/kb/api/users

如果有人能指出我正確的方向,那將是非常有意義的。

感謝, 埃迪

回答

0

得到這個工作。用於創建新用戶的密碼必須至少包含字符。把事情整理一下,但這是工作代碼。

public void createTenderUser(string supportUser, string supportPassword, string userEmail, string userPassword) 
{ 

    //Throw argument exceptions 

    string tenderUrl = string.Format("https://{0}:{1}@api.tenderapp.com/iremoco/users/", HttpUtility.UrlEncode(supportUser), HttpUtility.UrlEncode(supportPassword)); 
    string postData = string.Format("{{'email':'{0}','password':'{1}','password_confirmation':'{1}'}}", userEmail, userPassword); 
    if (userPassword.Length >= 6) 
    { 
     try 
     { 
      System.Net.ServicePointManager.Expect100Continue = false; 
      var request = (HttpWebRequest)WebRequest.Create(tenderUrl); 
      request.Accept = "application/vnd.tender-v1+json"; 
      request.ContentType = "application/json"; 
      request.Method = "POST"; 
      byte[] bytes = Encoding.UTF8.GetBytes(postData); 
      request.ContentLength = bytes.Length; 
      Stream dataStream = request.GetRequestStream(); 
      dataStream.Write(bytes, 0, bytes.Length); 
      dataStream.Close(); 
      WebResponse response = request.GetResponse(); 
     } 
     catch 
     { 
      //display error 
     } 
    } 
    else { 
     //display error 
    } 
} 

感謝, 埃迪

相關問題