2015-06-25 42 views
0

我正在嘗試使用C#在Quickbooks Online V3 API中創建日記帳分錄。如何在QuickBooks Online中創建日記帳條目

我所做的事情:

  • 檢查JSON價值觀和格式
  • 經過頁眉和接受。

頁眉信息:

Accept : application/json 
Authorization : OAuth oauth_token="************",oauth_nonce="cfc36792-8f9a-4202-9fec-be0a610eed8e",oauth_consumer_key="************",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1435189421",oauth_version="1.0",oauth_signature="***" 
Content-Length : 642 
Content-Type : application/json 
Host : qb.sbfinance.intuit.com 

//till here everything is fine not sure about last two lines.. 
//not sure should i add this to my header or not.. 

X-NewRelic-ID : UQMAU15RGwcAUllSDwc= 
X-NewRelic-Transaction : PxQAVVRUCgMIUiRXdHMBICETGlUDChAHHEAPVgoPBgILU3xUciMFJCEUG0MDUwFVAV1WVBVs 

我的代碼:

public static void Main() 
     { 

     // JournalEndPoint lnew = new JournalEndPoint(); 
      // string Json=lnew.CreateJournal(); 

      string consumerKey = "***"; 
      string consec = "***"; 
      string appkeysec1 = "***"; 
      string appkey1 = "***"; 

      string returnvalue = ExecuteV3Query(consumerKey, consec, appkey1, appkeysec1, "1397754725", "select * from employee where active=TRUE"); 

     } 
     public static string ExecuteV3Query(string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret, string CompanyId, string query) 
     { 
      string encodedQuery = RestSharp.Contrib.HttpUtility.UrlEncode(query); 
      string uri = string.Format("https://quickbooks.api.intuit.com/v3/company/{0}/journalentry", CompanyId, encodedQuery); 
      HttpWebRequest httpWebRequest = WebRequest.Create(uri) as HttpWebRequest; 
      httpWebRequest.Method = "POST"; 
      string JSonvalue = CreateUserJson(); 
      httpWebRequest.ContentType = "application/json"; 
      httpWebRequest.Accept = "application/json"; 
      httpWebRequest.Headers.Add("Authorization", GetDevDefinedOAuthHeader(consumerKey, consumerSecret, accessToken, accessTokenSecret, httpWebRequest, null)); 
      //HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse; 

      /* 
      * using (Stream data = httpWebResponse.GetResponseStream()) 
      { 
       //return XML response 
       return new StreamReader(data).ReadToEnd(); 
      } 
      */ 


      var result = ""; 
      HttpWebResponse httpResponse; 
      try 
      { 
       httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
       using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
       { 
        result = streamReader.ReadToEnd(); 
       } 
      } 
      catch (WebException e) 
      { 
       Console.WriteLine("This program is expected to throw WebException on successful run." + 
            "\n\nException Message :" + e.Message); 
       if (e.Status == WebExceptionStatus.ProtocolError) 
       { 
        Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode); 
        Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription); 
        using (Stream data = e.Response.GetResponseStream()) 
        using (var reader = new StreamReader(data)) 
        { 
         string text = reader.ReadToEnd(); 
         Console.WriteLine(text); 
         result = text; 
        } 
       } 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e.Message); 
      } 
      return result; 
     } 

GetDevDefineHeader()將創建頭並返回類型爲字符串。

+0

最後兩個標題行被插入int o由您的頭部自動插入一個新的插件。你不必自己添加它們。 – BrokenBinary

+0

@BrokenBinary你能告訴我我做錯了什麼嗎?我在過去3小時嘗試這件事,但得到相同的錯誤..請幫助我 – nikunjM

回答

0

在你的網址中,我沒有看到使用編碼查詢,你爲什麼傳遞它?

請檢查的CRUD和查詢正確的端點文檔操作 - https://developer.intuit.com/docs/api/accounting/JournalEntry

參見本例中使用GET開發defined-

https://gist.github.com/IntuitDeveloperRelations/0913b4c224de758fde0a

同樣這裏有一個例子後,您可以類似地寫JE-

//string res = CreateV3Customer(consumerKey, consumerSecret, accessToken, accessTokenSecret, realmId); 

public string CreateV3Customer(string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret, string realmId) 
    { 

     StringBuilder request = new StringBuilder(); 
     StringBuilder response = new StringBuilder(); 



     var requestBody = "{\"FamilyName\":\"Jack\"}"; 

     HttpWebRequest httpWebRequest = WebRequest.Create("https://quickbooks.api.intuit.com/v3/company/"+realmId+"/customer") as HttpWebRequest; 
     httpWebRequest.Method = "POST"; 
     httpWebRequest.ContentType = "application/json"; 
     httpWebRequest.Headers.Add("Authorization", GetDevDefinedOAuthHeader(consumerKey, consumerSecret, accessToken,accessTokenSecret,httpWebRequest, requestBody)); 
     request.Append(requestBody); 
     UTF8Encoding encoding = new UTF8Encoding(); 
     byte[] content = encoding.GetBytes(request.ToString()); 
     using (var stream = httpWebRequest.GetRequestStream()) 
     { 
      stream.Write(content, 0, content.Length); 
     } 
     HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse; 
     using (Stream data = httpWebResponse.GetResponseStream()) 
     { 


      string customerr = new StreamReader(data).ReadToEnd(); 

      return customerr; 

     } 
    } 
+0

我只是通過它,不使用它...這是爲員工,我在日記條目之前嘗試...我創建了單獨的課程併爲了問題的目的,我已經在單個類中寫過everthing,所以可能我忘了刪除它..但JSON即時創建我正確的,可能是有問題的標題,檢查端點...我不知道我在做什麼錯...你能幫助我嗎? – nikunjM

+0

查看上面的代碼,並將其與您的比較。我看到只有編碼是差異。你還沒有完成。 –

+0

Headers req- POST https://quickbooks.api.intuit.com/v3/company/717093040/query HTTP/1.1 Content-Type:text/plain Host:quickbooks.api.intuit.com 授權:OAuth oauth_token = 「lvprdBmi45KMPO2FnvYtq6KLFTMM7KG0P0PJO3Sm7F3n7pgq」,oauth_nonce = 「e5d6e732-f903-4456-9c5f-58103843c3c6」,oauth_consumer_key = 「qyprd7I5WvVgJZUvWDFnPoiBh1ejZn」,oauth_signature_method = 「HMAC-SHA1」,oauth_timestamp = 「1394005668」,oauth_version = 「1.0」,oauth_signature =「J8qgGZRa4loR6HEtdpAudP1nVpw% 3D「 –

相關問題