1

私のApexコードでは、メモリ内で処理するためにリモートcsvファイルをダウンロードしようとしています。残念ながら、System.CalloutException: Premature EOFファイルを取得しようとするとエラーが発生します。ファイルを使用してサーバーに接続できます(ファイルをダウンロードする準備ができていないときに返されるエラーメッセージを確認できます)ので、接続の詳細は問題ではない可能性があります。

private static void processURL(String url, UserHelper__c helper){

String username = 'login';
String password = 'password';

HttpRequest req = new HttpRequest();
HttpResponse res = new HttpResponse();
Http http = new Http();

req.setEndpoint(url);

Blob headerValue = Blob.valueOf(username + ':' + password);
String authorizationHeader = 'BASIC ' + EncodingUtil.base64Encode(headerValue);
req.setHeader('Authorization', authorizationHeader);

req.setMethod('GET');

try {
    System.debug('processURL Send request: '+req);
    res = http.send(req); //Premature EOF hits here.
    System.debug('processURL successful');

} catch(System.CalloutException e) {
    System.debug('processURL error: '+ e);
}

...

}
4

1 に答える 1

1

これは、サーバーがバッファリングされた方法で応答を送信したことが原因でした。SalesForceApexコードはバッファリングされた応答を処理できないようです。サーバー側で何が起こったのかについての詳細はすべてわかっていないので、それ以上の詳細を説明することはできません。

于 2012-08-24T14:42:57.993 に答える