HTTPCall関数について
現在クラサバで初めてWeb-APIの実装を行うため、HTTPCall関数について調べています。
オンライン逆引きサンプルのプロジェクトから「EL23_HTTPCall」を見つけて、このプログラムを参考にGETメソッドを実行してみたのですが、うまく動作しませんでした。
HTTPCall(’GET','https://www.Google.com','')
そこで、他のサイトでテストしたみたところいくつか動作するサイトがありました。
動作するサイトはアドレス部分がhttp://~になっているところだけのような気がするのですが、このHTTPCall関数はhttps://~始まりのサイトには対応していないのでしょうか?
-
httpsでも問題ないと思います。
-
あまり詳しくないのでわかりませんが上記URLで実行すると戻り値に何かしらのデータが戻ってくるので問題ないと思います。
URLを書くと承認待機中で投稿できないのかな?
-
ISHIJIMAさん、回答ありがとうございます。
こちらでは戻り値のBLOB型の内容にA=Ansi、U=Unicode、B=バイナリをそれぞれ指定して実行してみましたが、なにも返ってきませんでした。
やはり環境のせいかもしれませんね。
-
何かしらのデータが戻ってくるというのは、NULLが戻っているだけなのではないでしょうか。
-
お使いのバージョンは幾つですか?
XPA3.1ですと、サイトによってはアクセスできない場合があります。
今、ほとんどのサイトはTLS1.0/1.1は無効化され、TLS1.2以降でないとエラーになります。
3.2のヘルプに下記の記載がありますので参考にしてください。
(JAVAもオラクル版は有償なので、 AMAZONのJAVA8(Coretto)版をインストールしています)
↓↓↓↓↓
Magic xpa 3.1 と Magic xpa 3.2の違い
動作環境に、[HTTPフレームワーク]の設定が追加されました。HTTPxxx関数を使用する際に利用するHTTPライブラリとしてJavaを定義することができます。Javaを使用することで、TLS 1.2で拡張されたサポート機能を利用することができます。
-
遠藤さん、いつも貴重な情報をありがとうございます。
-
そんなところに設定があるのですね・・
勉強になりますね
-
遠藤さん、ちなみに別のオプションである「.net」のほうは試されましたか?ASP.NETでいいのでしょうかね。
-
回答ありがとうございます。
tandaさん
戻り値として取得しているBLOB項目を適当に更新してからHTTPCallすると結果が空白になるので、おそらくNULLが返ってきているものと思われます。遠藤勇人さん
使用しているバージョンは3.3d PT2です。
私もこちらの情報にたどり着いて、Maigic.Iniを「HTTPFramework = S、D=DotNet、J=Java」に変えて実行してみましたが結果は変わりませんでした。
※JAVAについては、[MAGIC_JAVA]セクションにJava\jre1.8.0_241のパスが設定されていたのですが、これでいいのでしょうか? -
>他のサイトでテストしたみたところいくつか動作するサイトがありました。
ネットワーク環境で帰ってこないという事はないですか?(ファイアウオールとか)
xpaではなく.net等で確認してできているURLであればxpaの問題なのでは?
-
yonex_gogogoさん、こんにちは
>※JAVAについては、[MAGIC_JAVA]セクションにJava\jre1.8.0_241のパスが設定されていたのですが、
>これでいいのでしょうか?
-------------------------------
INIへ記述だけではだめです。
記述の通り、Javaがインストールされていないと........(^^;
ちなみに、下記はAmazon Correttoをインストールした環境でのMAGIC.INです。
↓
[MAGIC_JAVA]
JAVA_HOME=C:\Program Files (x86)\Amazon Corretto\jre8\bin\serverJVM_PATH=C:\Program Files (x86)\Amazon Corretto\jre8\bin\server\jvm.dll
CLASSPATH=.;Support\*;Support\Apache-httpcomponents-client\lib\*;GigaSpaces-xpa\lib\xpa\*;GigaSpaces-xpa\lib\SerializableUserDataClasses\*;GigaSpaces\lib\required\*;Gateways\*
JVM_ARGS=-Djava.compiler=NONE -Xms16m -Xmx256m -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser -Dcom.gigaspaces.logger.RollingFileHandler.filename-pattern={homedir}/../Logs/GS/{date,yyyy-MM-dd~HH.mm}-gigaspaces-{service}-{host}-{pid}.log -Dlog4j.configurationFile=%EngineDir%\GigaSpaces-xpa\config\log4j2.xml -Dcom.magicsoftware.xpa.home=%EngineDir% -Dcom.magicsoftware.xpa.logging.module=MgxpaRuntime_GS -Dcom.magicsoftware.xpa.ServerLoadOnDemandTimeout=10
HAYATO@アインシュタイン設計社
-
ISHIJIMAさん
> ネットワーク環境で帰ってこないという事はないですか?(ファイアウオールとか)
xpaではなく.net等で確認してできているURLであればxpaの問題なのでは?
ネットから.netのサンプルコードを拾ってきて、試行錯誤してMagicに展開してみました。
System.Net.Http.HttpClient()を使うようですが、こちらでは正常に動作しました。
やはりxpaの問題なのかもしれません。遠藤勇人さん
> INIへ記述だけではだめです。
すいません、説明していませんでしたがJavaはインストールされています。私の環境のMagic.iniです。
[MAGIC_ENV]
HTTPFramework = J[MAGIC_JAVA]
JAVA_HOME=C:\Program Files (x86)\Java\jre1.8.0_241
JVM_PATH=C:\Program Files (x86)\Java\jre1.8.0_241\bin\client\jvm.dll
CLASSPATH=.;Support\*;Support\Apache-httpcomponents-client\lib\*;GigaSpaces-xpa\lib\xpa\*;GigaSpaces-xpa\lib\SerializableUserDataClasses\*;GigaSpaces\lib\required\*;Gateways\*
JVM_ARGS=-Djava.compiler=NONE -Xms16m -Xmx256m -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser -Dcom.gigaspaces.logger.RollingFileHandler.filename-pattern={homedir}/../Logs/GS/{date,yyyy-MM-dd~HH.mm}-gigaspaces-{service}-{host}-{pid}.log -Dlog4j.configurationFile=%EngineDir%\GigaSpaces-xpa\config\log4j2.xml -Dcom.magicsoftware.xpa.home=%EngineDir% -Dcom.magicsoftware.xpa.logging.module=MgxpaRuntime_GS -Dcom.magicsoftware.xpa.ServerLoadOnDemandTimeout=10
; -Dcom.magicsoftware.xpa.DefaultErrorFormatFileName=%EngineDir%\GigaSpaces-xpa\test\DefaultError.htmlJAVA_HOMEとJVM_PATHに記述されていたフォルダとファイルは存在することは確認しました。
しかし、上記の設定でHTTPCallを動かしてみたところ、アクティビティモニター上でJavaのエラーが出力されていたのでこれが問題のようですね。
Javaについて全然知らないので、エラーが出ているなということしかわかりませんが…アクティビティモニターのエラー内容
-1 17:44:50.912 Error HttpJavaWrapper::ExecuteRequest - "java.net.UnknownHostException: www.Google.com
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(Unknown Source)
at java.net.InetAddress.getAddressesFromNameService(Unknown Source)
at java.net.InetAddress.getAllByName0(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:111)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71)
at com.magicsoftware.xpa.utils.http.HttpClient.execute(HttpClient.java:179)
", Program: "EL23_HTTPCall". -
3.2PT1で実験していますが[HTTPフレームワーク]は設定していないので空白になっています。
デフォルトはD=DotNetなのでJ=Javaでなくてもこちらでは問題なく動いています。
-
>JAVA_HOME=C:\Program Files (x86)\Java\jre1.8.0_241
--------------------------------------------------------------------------
32bit版のJavaをインストールされていますが、実行時のエンジンが64bitで
動かされているということはないですか?
magic.iniの
64BitEngine = y
と
64BitEngineForStudio = Y
の箇所です。
HAYATO@アインシュタイン設計社
-
解決したので報告です。
原因は社内インターネット接続環境にプロキシサーバーを使用していたためでした。
Magic.iniにHTTPProxyAddressを設定したところ、正常に動作するようになりました。[MAGIC_ENV]
HTTPFramework = S(Dでも可)
HTTPProxyAddress = xx.xx.xx.xx:8080ISHIJIMAさん、遠藤勇人さん、お騒がせして申し訳ありませんでした。
設定前に.netのサンプルコードだけ正常実行ができたのは、Windowsの設定を優先しているからなのかもしれません。 -
プロキシサーバーがある場合はそこを設定しないといけないのですね
難しいですね・・
サインインしてコメントを残してください。
コメント
17件のコメント