tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル みんなの自動翻訳WebAPIをVB6またはVBAから利用したい
投稿日: 2015/04/17(Fri) 09:59
投稿者IMA
お世話になります。 IMAと申します。
Windows8.1や7での利用で最近はExcelVBAをよく利用します。

みんなの自動翻訳
https://mt-auto-minhon-mlt.ucri.jgn-x.jp/
にはWebAPIが提供されています。

例えば、サンプルがPHPで載っており、私もPHPでは動作確認が出来ました。

include("lib/OAuth/OAuthStore.php");
include("lib/OAuth/OAuthRequester.php");
  
define("NAME", "");
define("KEY", "");
define("SECRET", "");
define("URL", "");
  
$options = array("consumer_key" => KEY, "consumer_secret" => SECRET);
OAuthStore::instance("2Leg", $options);
  
$method = "POST";
$params = array(
     "key" => KEY,
     "name" => NAME,
     "text" => "Hello World!!",
     "type" => "xml",
     "data" => "Logging Data",
);
  
try {
     $request = new OAuthRequester(URL, $method, $params);
     $result = $request->doRequest();
     print_r($result);
} catch(OAuthException2 $e) {
     echo $e->getMessage();
}

結果 XXXXXはダミーデータです。
OAuthRequester Object
(
     [files:protected] =>
     [request:protected] =>
     [store:protected] => OAuthStore2Leg Object
         (
             [consumer_key:protected] => de530109a8946afc5f0daa28be6b656c0550XXXXX
             [consumer_secret:protected] => d6446346aff9d5cb118de1d6e57XXXXX
             [signature_method:protected] => Array
                 (
                     [0] => HMAC-SHA1
                 )
             [token_type:protected] =>
         )
     [usr_id:protected] => 0
     [signed:OAuthRequestSigner:private] =>
     [realm:protected] =>
     [param:protected] => Array
         (
             [key] => de530109a8946afc5f0daa28be6b656c0550XXXXX
             [name] => hogehoge
             [text] => Fontless%20structured%20document%20image%20representations%20for%20efficient%20rendering
             [type] => xml
             [data] => Logging%20Data
         )
     [uri_parts:protected] => Array
         (
             [scheme] => https
             [host] => mt-auto-minhon-mlt.ucri.jgn-x.jp
             [path] => /api/mt/patent_en_ja/
             [port] => 443
             [user] =>
             [pass] =>
             [query] =>
             [fragment] =>
         )
     [uri:protected] => hhttps://mt-auto-minhon-mlt.ucri.jgn-x.jp/api/mt/patent_en_ja/
     [headers:protected] => Array
         (
         )
     [method:protected] => POST
     [body:protected] =>
)
Array
(
     [code] => 200
     [headers] => Array
         (
             [date] => Wed, 15 Apr 2015 03:22:12 GMT
             [server] => Apache
             [expires] => Thu, 19 Nov 1981 08:52:00 GMT
             [cache-control] => no-store, no-cache, must-revalidate, post-check=0, pre-check=0
             [pragma] => no-cache
             [content-length] => 415
             [content-type] => application/xml
             [set-cookie] => PHPSESSID=5otv47e5d8e758s2prmnotqpn0; path=/; secure
             [connection] => close
         )
     [body] => <?xml version="1.0" encoding="UTF-8"?>
<resultset>
   <code>0</code>
   <message></message>
   <request>
     <url>hhttps://mt-auto-minhon-mlt.ucri.jgn-x.jp/api/mt/patent_en_ja/</url>
     <text>Fontless structured document image representations for efficient rendering</text>
   </request>
   <result>
     <text>fontless効率的なレンダリングのために構造化文書画像表現</text>
   </result>
</resultset>
  
)
  
これをVBAで動かそうとしているのですが、523:リクエストnameエラーなどでどん詰まり状態です。
oauth 2legged認証になると思いますが、下記のHPなども参考にしているのですが???状態です。
http://d.hatena.ne.jp/n-3104/20110718/1311002173
  
現状のテストコードは、以下の様な感じです。(一部省略しています)
    Set XMLHTTP = New MSXML2.XMLHTTP
     Set param = New Scripting.Dictionary
     param("oauth_consumer_key") = "de530109a8946afc5f0daa28be6b656c0550XXXXX"
     param("oauth_signature_method") = "HMAC-SHA1"
     timeStamp = DateDiff("s", #1/1/1970#, Now)
     param("oauth_timestamp") = CStr(DateDiff("s", #1/1/1970#, Now()))
     param("oauth_nonce") = param("oauth_timestamp") * 333333
     param("oauth_version") = "1.0"
     '電子署名の作成
    MakeSign "POST", urlRequestToken, param
     sPostData = "key=de530109a8946afc5f0daa28be6b656c0550XXXXX" & _
                 "&name=hogehoge&text=" & EncodeURL(stext)
     PostData = StrConv(sPostData, vbFromUnicode)
     XMLHTTP.Open "POST", urlRequestToken, False
     XMLHTTP.setRequestHeader "Authorization", "OAuth " & BuildHeader(param)
     XMLHTTP.send (PostData)
     OAuthStatus = XMLHTTP.statusText 'リクエスト成否の状態を取得
    Debug.Print XMLHTTP.responseText
  
皆様のアドバイスを頂ければ幸いです。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。