2015-11-28 51 views
1

我與C#中的新手,但因爲我用Delphi連接通過使用OAuth其餘的Magento有麻煩....我決定開始特林用C#Magento的C#RESTAPI錯誤

做我搜索網站的解決方案,並發現了Magento.RestApi庫,似乎是非常新的。 作爲一個新手和所有人,我花了一點時間,直到我成功地設置了我的環境進行測試,所以這就是我所做的: - 安裝Visual Studio 2015 Comunity之後,我開始了一個新項目,然後從它開始我訪問的包管理控制檯和運行這個命令:

Install-Package Magento.RestApi 

在此之後,我放置在窗體上的一個按鈕,和的onClick,我添加以下代碼:

var client = new MagentoApi() 
.SetCustomAdminUrlPart("index.php/admin") 
.Initialize("http://www.example.com/magento/", "77896eyrf34i37873gh7389h7e3fg34", "u837h743488dg38g8384433423") 
.AuthenticateAdmin("adminuser", "adminpassword"); 

當然,我加入在代碼中使用子句:

using Magento.RestApi; 

此外,Initialize的參數是需要的參數...以及密鑰和祕密。 據我所知(從根本沒有文檔),這應該是實例化一個Magento RestAPI對象,這將允許我干涉我的magento商店。

當我運行的代碼,然後單擊按鈕,這是我所得到的:

Exception thrown: 'Magento.RestApi.MagentoApiException' in Magento.RestApi.dll 

Additional information: The provided admin username 'adminuser' or password is invalid. The user needs to be a Magento admin. 

的事情是:用戶是完美的,這是我的管理員用戶名,密碼是正確的。用戶的REST角色設置在我的Magento商店的後端,其餘所有設置都在後端完成,以便啓用REST。

在另一方面,我試圖調查該庫做什麼,我安裝提琴手 ...才發現,其實通過我的商店返回錯誤頁面是這樣的:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>404 Not Found</title> 
</head><body> 
<h1>Not Found</h1> 
<p>The requested URL /magento/oauth/initiate was not found on this server.</p> 
<hr> 
<address>Apache/2.2.3 (CentOS) Server at www.example.com Port 80</address> 
</body></html> 

(這是來自Fiddler的TextView)

顯然,我的REST調用的URL是錯誤的?或者我的商店設置不正確?

而且要OAuth似乎因爲在請求(也提琴手)的身份驗證選項卡使用我有這樣的:

No Proxy-Authorization Header is present. 

Authorization Header is present: OAuth oauth_callback="http%3A%2F%2Flocalhost%3A8888",oauth_consumer_key="77896eyrf34i37873gh7389h7e3fg34",oauth_nonce="kldcjldvnldgkll",oauth_signature="jkiu3i5i5hbikh%3D",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1448717978",oauth_version="1.0" 
+0

你的店真的在'/ magento /'下嗎? [Here](http://devdocs.magento.com/guides/m1x/api/rest/authentication/oauth_authentication.html)它提供了一個'/ oauth/initiate'的示例URI。 – Kenney

+0

我知道這篇文章,但它對我沒有多大幫助。我的店鋪(前端)的實際網址是'http:// www.example.com/magento /',而我的管理網址(後端)是'http://www.example.com/magento/index.php/admin '。有沒有什麼辦法(一些虛擬REST客戶端應用程序與oAuth),我可以填充我的密鑰和祕密,和目的地測試網址,所以我可以看到,我使用正確的URL連接?所以,有些客戶完美無瑕,所以我會知道問題出在我店的配置而不是客戶端? – user1137313

+0

404錯誤說:'

Apache/2.2.3(CentOS)服務器在www.example.com端口80
' - 你沒有連接到'www.example.com'是你嗎? – Kenney

回答

0

我找到了解決我的問題。這是一個服務器端問題。 我不得不添加一些設置到httpd.conf文件。我的意思是我必須檢查我已安裝的Apache版本(2.2.3) 根據您的Linux版本,apache配置文件的命名可能不同,可能位於其他位置,但對於我的CENTOS,位置爲:

/etc/httpd/conf/httpd.conf 

然後在httpd中。CONF我說:

<Directory /var/www/html/www.example.com/magento/> 
    Options Indexes FollowSymLinks 
    AllowOverride All 
    Satisfy Any 
</Directory> 

還因爲我使用VirtualHosts,我需要添加虛擬主機TAG這裏面設置承載我的Magento

添加設置後,我重新啓動appache服務,如:

service httpd restart 

現在我終於可以使用C#庫連接到我的REST web服務。

(我仍然有問題),如果我嘗試測試連接到REST服務 通過OAuth從Firefox的RESTClient實現。在那裏,我得到一個奇怪的錯誤 消息:

oauth_problem=nonce_used 

但只要我可以用C#連接,我會忽略這個問題。