我有一个使用Free Bing翻译API翻译当前文本字符串的功能。我只是想确定是否有任何内容失败或者应用程序ID发生了什么事情,或者我继续处理请求,我不希望显示大错误。
我现在的代码是:
$translate_feed = file_get_contents('http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=' . BING_APPID . '&text=' . urlencode($text) . '&from=en&to=' . $to_lan . '');
$translate = simplexml_load_string($translate_feed);
return $translate[0];
我想要发生的是,如果有任何失败,那么如果我在URL中添加另一个字符使其无效,那么我希望它只返回$text
所以至少某些示出。
谢谢!
答案 0 :(得分:15)
你有没有尝试过失败,看看会发生什么?
如果这是一个例外,请抓住并处理它......
try{
//enter code to catch
}catch(Exception $ex){
//Process the exception
}
如果函数输出错误,只需@来隐藏错误并手动处理$ translate_feed或$ translate的错误输出。
您可以尝试通过简单地将无效的URI传递给file_get_contents然后强制将非XML或无效的XML提供给simplexml_load_string以查看会发生什么来尝试失败。
答案 1 :(得分:5)
$translate_feed = file_get_contents('http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=' . BING_APPID . '&text=' . urlencode($text) . '&from=en&to=' . $to_lan . '');
if ( $translate_feed === false )
{
echo "failed";
}
答案 2 :(得分:3)
/*
It's a modified file_get_contents()
get_contents(filename, use_include_path, context, offset, maxlen)
*/
function get_contents($url, $u = false, $c = null, $o = null) {
$headers = get_headers($url);
$status = substr($headers[0], 9, 3);
if ($status == '200') {
return file_get_contents($url, $u, $c, $o);
}
return false;
}
echo get_contents('https://batas.kz/');
答案 3 :(得分:3)
你可以这样做
if(@file_get_contents("yourFilePath.txt")){
echo "success";
}
答案 4 :(得分:0)
if( !$translate_feed) return "Failed";
答案 5 :(得分:0)
$translate_feed = file_get_contents('http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=' . BING_APPID . '&text=' . urlencode($text) . '&from=en&to=' . $to_lan . '');
$result=$text;
if ($translate_feed) {
$translate = simplexml_load_string($translate_feed);
if (is_array($translate)) $result=$translate[0];
}
return $result;
答案 6 :(得分:0)
在本地范围内创建了$http_response_header变量,我们可以使用它来检查从服务器返回的标头。这是我的实施:
public function getData($url)
{
try {
$response = @file_get_contents($url);
if (isset($http_response_header)) {
if (!in_array('HTTP/1.1 200 OK', $http_response_header) &&
!in_array('HTTP/1.0 200 OK', $http_response_header)) {
throw new \Exception('Server did not return success header!');
}
}
return $response;
} catch (\Exception $ex) {
throw new TransportException($ex->getMessage(), $ex->getCode(), $ex);
}
}