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

这是由于服务器以缓冲方式发送其响应造成的。似乎 SalesForce Apex 代码无法处理缓冲响应。我没有关于服务器端发生的事情的所有细节,所以我不能提供更多细节。

于 2012-08-24T14:42:57.993 回答