Неожиданная Ошибка HTTP произошла во время запроса API

Я просто сделал чистую установку Wordpress. Но у меня есть проблема, когда я устанавливаю или использую API WordPress. Поэтому отправьте мне знак

Неожиданная Ошибка HTTP произошла во время запроса API.

Странная вещь состоит в том, что я посмотрел везде. И решения не работают на меня porponen Wordpress 3.2.1 и не знают, как решить проблему

2
19.09.2011, 10:12
3 ответа

Используйте следующую функцию для отладки запроса API HTTP, Вы узнаете истинную причину, почему запрос API HTTP перестал работать.

Вставьте следующий код в function.php своей темы.

function dump_http_response( $response, $type, $transport, $args, $url ) {
    if ( is_admin() && $type == "response" )  {
        echo '<span style="color: #f00;">';
        var_dump( $response );
        echo '</span>';
    }
}
add_action( 'http_api_debug', 'dump_http_response', 1, 5 );
3
19.02.2020, 22:26
  • 1
    С вышеупомянутым кодом показывает мне это сообщение object(WP_Error)#3597 (2) { ["errors"]=> array(1) { ["http_request_failed"]=> array(1) { [0]=> string(83) "Failed trying to open by fopen() http://api.wordpress.org/plugins/info/1.0/" } } ["error_data"]=> array(0) { } } An Unexpected HTTP Error occurred during the API request. И не добирайтесь, чтобы сделать? –  AlejoNext 19.09.2011, 21:27
  • 2
    это походит на Вас, не имеет разрешения открыть URL с помощью fopen. Попытайтесь использовать Базовый плагин Управления, который позволит, Вы для выбора http транспортируете для использования. Вы будете иметь больше контроля на транспорте http, который будет использоваться вместо fopen. –  Hameedullah Khan 20.09.2011, 10:19
  • 3
    @HameedullahKhan http_api_debug имеет 5 аргументов... –  kaiser 20.01.2013, 13:30

Этот сценарий дает Вам грубый обзор, какая файловая система mehods позволяются/устанавливаются на Вашем сервере. Первые три метода являются методами, которые предпочтенный WordPress и WordPress могут быть вынуждены использовать одного из них путем определения FS_METHOD в wp-config.php.

Скопируйте код в файл, загрузите файл на Ваш сервер, контроль, какие методы файловой системы позволяются/устанавливаются и удаляют файл как можно скорее.

<?php
$yes = '<span style="color:green; font-weight:bold">:)</span>';
$no  = '<span style="color:red; font-weight:bold">:(</span>';
$items = array();

$items['fopen'][0] = 'Opening urls via fopen (for FS_METHOD "direct")';
$items['fopen'][1] = ( TRUE == ini_get( 'allow_url_fopen' ) ) ?
    ' is allowed '.$yes : ' is not allowed '.$no;

$items['ssh2'][0] = 'SSH2 (for FS_METHOD "ssh")';
$items['ssh2'][1] = ( TRUE === extension_loaded( 'ssh2' ) ) ?
    ' is installed '.$yes : ' is not installed '.$no;

$items['ftp'][0] = 'FTP (for FS_METHOD "ftpext")';
$items['ftp'][1] = ( TRUE === extension_loaded( 'ftp' ) ) ?
    ' is installed '.$yes : ' is not installed '.$no;

$items['sockets'][0] = 'Sockets (for FS_METHOD "ftpsockets")';
$items['sockets'][1] = ( TRUE === extension_loaded( 'sockets' ) ) ?
    ' are installed '.$yes : ' are not installed '.$no;

$items['curl'][0] = 'Curl';
$items['curl'][1] = ( TRUE === extension_loaded( 'curl' ) ) ?
    ' is installed '.$yes : ' is not installed '.$no;

echo '<html>';
echo '<ol>';

foreach ( $items as $item ) {
    printf( '<li>%s%s</li>', $item[0], $item[1] );
}

echo '</ol>';
echo '</html>';

Можно попытаться вынудить WordPress использовать метод файловой системы путем определения его в Вашем wp-config.php, например, использовать php расширение ftp вместо fopen:

if ( ! defined( 'FS_METHOD' )
  define( 'FS_METHOD', 'ftpext' );

Это могло быть полезно, если бы Вы получили проблему с помощью метода файловой системы, и хотят использовать другой.

1
19.02.2020, 22:26

"API WordPress" является довольно неопределенным (WP получила несколько API). Но от Вашей ошибки кажется, что это - проблема API HTTP. Существует несколько возможных препятствий:

Проблемы сертификата SSL

Если Вы получили проблему со своим сертификатом SSL (необходимый, когда сервер является субдоменом сайта, перечисленного в сертификате SSL; использование Wildcard-сертификата устраняет потребность в этом).

Как указано в комментариях, проблема могла также состоять в том, что Ваш сервер имеет устаревший или недостающий SSL корневые сертификаты CA.

Проблемы запроса (WP HTTP API, не отвечающий 200/OK)

Вы думаете Вы, не получен cURL доступный и fsocketopen нейтрализация не удалась?

Сначала Вы хотите проверить, удается ли ответ. Для этой задачи можно использовать два сервиса (где оба говорят Вам немного отличающиеся детали):

Затем как @HameedullahKhan указанный в его ответе, существует фильтр отладки для HTTP WP API. Этот фильтр работает в абсолютной последней точке любого запроса, прямо перед возвращением его разработчику.

<?php
/** Plugin Name: (#28871) Debug WP HTTP API response */
add_action( 'http_api_debug', 'wpse28871_debug_request', 999, 5 );
function wpse28871_debug_request( $response, $type, $class, $args, $url )
{
    printf( '<pre>ResponseData: %s', is_wp_error( $response ) 
        ? $response->get_error_code().' '.$response->get_error_message()
        : $response
    );
    printf( '<br />ResponseType: %s',      $type );
    printf( '<br />ResponseClass: %s',     $class );
    printf( '<br />ResponseArgs: %s',      $args );
    printf( '<br />ResponseURl: %s</pre>', $url );
    # @TODO Uncomment to exit when debugging AJAX requests
    # exit();
}

Если вышеупомянутое не дает Вам понимания, можно все еще попытаться отладить ВИХРЕВОЙ объект прямо после того, как это было создано и прямо прежде чем это было запущено. Этот путь довольно неизвестен, но он имеет огромные полномочия при объединении его с вышеупомянутым плагином: Это говорит Вам, если запрос имеет проблему с ЗАВИХРЕНИЕМ args или если это перестало работать позже, сужая диапазон возможных проблем довольно быстро.

<?php
/* Plugin Name: (#28871) Debug WP HTTP API cURL arguments */
add_action( 'http_api_curl', 'wpse28871_curl_debug' );
function wpse28871_curl_debug( $handle )
{
    printf(
         '<pre>%s</pre>'
        ,var_export( curl_getinfo( $handle, CURLINFO_HEADER_OUT ), true ) )
    );
}
1
19.02.2020, 22:26
  • 1
    +1, но примечание, что, если проблема с сайтом запроса, не распознающим сертификат SSL цели как допустимый, то это - вероятно, просто проблема конфигурации сервера. –  webaware 20.01.2013, 01:14
  • 2
    @webaware +1 к Вашему комментарию - добавленный к ответу (который можно сделать сами в следующий раз с использованием кнопки "редактирования"). Заметка на полях: Фиксация сертификата была тем, что я попробовал сначала (в течение очень долгого времени), и это не сделало этого (на сервере Linux), таким образом, я придумал это. И поскольку этот плагин только инициировал во время обновления, это - симпатичное сохранение. –  kaiser 20.01.2013, 13:34
  • 3
    Ваша проблема отличалась, сертификат, был проблемно-ориентирован и не Wildcard-сертификат, таким образом, это не было допустимо для субдоменов. Что касается редактирования ответов других, я сделал это несколько раз с новичками, но уклоняюсь от выполнения этого с "экспертами", так как я взбесил щебет bennett путем исправления его :) –  webaware 21.01.2013, 00:54
  • 4
    @webaware ну, я не Микросхема ;) И да, это абсолютно в порядке редактирования наличия на моих ответах. (Это - то, как система работает). И главным образом когда это - дополнения - Вы видите это от моего редактирования, отражающего Ваш комментарий. Если я не соглашаюсь, что могу все еще вернуться он.Удачи. –  kaiser 21.01.2013, 03:32

Теги

Похожие вопросы