1

PHPから呼び出す必要のあるJavaサービスがあります。これは次のようになります。

getProductsForMode(java.util.Calendar date, int modeId)

PHPの日付クラスをjava.util.Calendarクラスにマッピングするのに問題があります。私はいくつかの異なるアプローチを試しましたが、まったく役に立ちませんでした。

アプローチ#1(JavaのCalendarHandleにマップされるCalendarHandleでDateTimeオブジェクトをラップする):

class CalendarHandle
{
  public $type;
  public $date;

  function __construct($date=null)
  {
    $this->date = $date;
  }
}

$this->hessianClient = new HessianClient(_HESSIAN_ENDPOINT, $hessianOptions);
$config = &HessianConfig::globalConfig();
$config->typeMap->mapRemoteType('com.caucho.hessian.io.CalendarHandle', 'CalendarHandle');

$time = new CalendarHandle(new DateTime($dateEvaluated));
$products = $this->hessianClient->getProductsForMode($time, 1234);

エラー:

[06-Jul-2011 11:16:52] PHP致命的なエラー:/ Users / jordanb / Sites /proposal-framework/trunk/plugins/srHessianClientPlugin/hessianphp/のメッセージ「HttpError:MalformedHTTPheader」でキャッチされない例外「HttpError」 Http.php:265

アプローチ#2:DateTimeをjava.util.Calendarにマッピングする

$this->hessianClient = new HessianClient(_HESSIAN_ENDPOINT, $hessianOptions);
$config = &HessianConfig::globalConfig();
$config->typeMap->mapRemoteType('java.util.Calendar', 'DateTime');

$time = new DateTime($dateEvaluated);
$products = $this->hessianClient->getProductsForMode($time, 1234);

エラー:

[06-Jul-2011 11:28:50] PHP致命的なエラー:キャッチされない例外'HessianError'とメッセージ'Hessian Parser、不正な形式の応答:/ Users / jordanb / Sites/proposal-framework/trunk/plugins/srHessianClientPluginのr'が必要です/hessianphp/Protocol.php:350

誰かがHessianを使用してPHPからJavaにDateTimeまたはある種のタイムスタンプを送信することに成功しましたか?前もって感謝します!

4

2 に答える 2

1

php time()関数(intを返し、これをlongとしてJavaに送信する)を使用するのは実用的でしょうか?Javaでは、longをnew Date(long Date)に渡すだけで済みます。

于 2011-07-06T18:42:45.563 に答える
1

UNIXタイムスタンプを使用します。それが最善の策です。

PHP:

$ts = time();

$tsどういうわけかJavaに渡してください。

Java:

long ts = getTimeFromPhp();
Date dt = new Date(ts); 

または、カレンダーを使用できます。

Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(ts);
于 2011-07-06T18:52:46.440 に答える