Я часто люблю рассказывать анекдот про человека, который, ночью, потерял ключи по дороге домой, но ищет их под фонарем у подъезда. Потому что там светлее. Не будьте этим человеком. Я же ясно обозначил, в чем проблема. Прям вот яснее некуда. Зачем усложнять? Зачем эти HEX-ы, зачем догадки с заголовками и кодировками, если это все тут не при чем? Ну не при чем же --- Добавлено --- Выкиньте из середины лишнее. Там же однотипные записи идут все равно. Оставьте штучек 5-6 их. А остальное не трогайте, копируйте как есть.
HTML: 'ÿþ[' . "\0" . ' ' . "\0" . ' ' . "\0" . ' ' . "\0" . '\'' . "\0" . '{' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '-B>@C??0\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . 't' . "\0" . 'r' . "\0" . 'u' . "\0" . 'e' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '1' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '08<5=>20=85\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '">20@K\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . ' >48B5;L\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '08<5=>20=85>;=>5\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '@B8:C;\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" '#?;>B=8B5;L ' . "\0" . '=0?>;L=K9 ' . "\0" . 'S' . "\0" . ' ' . "\0" . '7' . "\0" . '6' . "\0" . '3' . "\0" . '9' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '@B8:C;\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '4' . "\0" . '1' . "\0" . '3' . "\0" . '9' . "\0" . '7' . "\0" . '7' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '@B8:C;>AB02I8:0\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '4' . "\0" . '1' . "\0" . '3' . "\0" . '9' . "\0" . '7' . "\0" . '7' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '48=8F008<5=>20=85\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . 'HB\\' . "\0" . '"' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '}' . "\0" . '\'' . "\0" . ' ' . "\0" . ' ' . "\0" . ']' . "\0" . ''
Странный вид строки, не правда ли? --- Добавлено --- надеюсь этот раз правильно код сделал и скопировал строку из браузера? PHP: <?php $txt = file_get_contents("http://login:password@msbws01.meesenburg.kz/msb_test_utp/hs/OnlineStore/Products"); echo (var_export($txt)); ?>
А кроме того, что тошнит, есть мысли и комментарии по теме, которые помогут решить простую для профи, но сложную для новичка задачу? --- Добавлено --- Так вроде же всё сделал, что просили? Ну и что что дополнительно попробовал заголовок подсунуть. Я же и без него сделал. А там кроме хексов и символы есть в отдельной колонке. Кроме того скопировал из браузера в отдельном посте то, что получилось в результате. Начало взял и конец. Середину обрезал. Или в php сообществе слова имеют другую симантику. Ну так дайте мапинг на слова, усвою, буду понимать. А может у вас есть тут другая ветка? Для тех, кто туго соображает. Надо, я и туда напишу вопрос, мне не сложно, мне результат нужен. Сори за вышесказанное, но хоть убейте, не врубаюсь, чего не сделал, а нужно было сделать?
этот результат от кода: PHP: <?php $txt = file_get_contents ( 'http://login:password@msbws01.meesenburg.kz/msb_test_utp/hs/OnlineStore/Products' ); var_export ( $txt ); или с заголовком дополнительно ?
Смущает конкатенация. Не должно ее там быть. Такое чувство, что сервер генерит на JSON-строку, а php_код под eval. Наличие BOM тоже как бы намекает на это. --- Добавлено --- Плюс, строка битая. Что это за мусор в ней: '#?;>B=8B5;L ' без конкатенации, ломающий ее? --- Добавлено --- Крч это очень странно и не похоже на то, что в первом посте. Как так?
Завтра точно скажу. +перепроверю себя --- Добавлено --- Генерация происходит средствами 1с бухгалтерия. Завтра поговорю с программистом, который это делал. Попытаюсь понять стандартными средствами системы он делал или сам что то мастерил. Отпишусь.
Вот это выходит в браузере: HTML: 'ÿþ[' . "\0" . ' ' . "\0" . ' ' . "\0" . ' ' . "\0" . '\'' . "\0" . '{' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '-B>@C??0\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . 't' . "\0" . 'r' . "\0" . 'u' . "\0" . 'e' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '1' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '08<5=>20=85\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '">20@K\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . ' >48B5;L\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '08<5=>20=85>;=>5\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '@B8:C;\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '@B8:C;>AB02I8:0\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '48=8F008<5=>20=85\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '\\' . "\0" . '"' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '}' . "\0" . '\'' . "\0" . ',' . "\0" . ' ' . "\0" . ' ' . "\0" . '\'' . "\0" . '{' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '-B>@C??0\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . 'f' . "\0" . 'a' . "\0" . 'l' . "\0" . 's' . "\0" . 'e' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '2' . "\0" . '1' . "\0" . '6' . "\0" . '3' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '08<5=>20=85\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '#?;>B=8B5;L ' . "\0" . '=0?>;L=K9 ' . "\0" . 'S' . "\0" . ' ' . "\0" . '7' . "\0" . '6' . "\0" . '3' . "\0" . '9' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . ' >48B5;L\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '0' . "\0" . '1' . "\0" . '8' . "\0" . '3' . "\0" . '2' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '08<5=>20=85>;=>5\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '#?;>B=8B5;L ' . "\0" . '=0?>;L=K9 ' . "\0" . 'S' . "\0" . ' ' . "\0" . '7' . "\0" . '6' . "\0" . '3' . "\0" . '9' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '@B8:C;\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '4' . "\0" . '1' . "\0" . '3' . "\0" . '9' . "\0" . '7' . "\0" . '7' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '@B8:C;>AB02I8:0\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . '4' . "\0" . '1' . "\0" . '3' . "\0" . '9' . "\0" . '7' . "\0" . '7' . "\0" . '\\' . "\0" . '"' . "\0" . ',' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '\\' . "\0" . '"' . "\0" . '48=8F008<5=>20=85\\' . "\0" . '"' . "\0" . ':' . "\0" . ' ' . "\0" . '\\' . "\0" . '"' . "\0" . 'HB\\' . "\0" . '"' . "\0" . '\\' . "\0" . 'r' . "\0" . '\\' . "\0" . 'n' . "\0" . '}' . "\0" . '\'' . "\0" . ' ' . "\0" . ' ' . "\0" . ']' . "\0" . '' Всего 4329 строк такой ерунды. Код при этом не содержит ничего лишнего, в том числе не файла .htaccess, всё выполняется на локальном сервере Endels: PHP: <?php $txt = file_get_contents("http://login:password@msbws01.meesenburg.kz/msb_test_utp/hs/OnlineStore/Products"); echo (var_export($txt)); ?> C 1C программистом получится поговорить позже, отпишусь...
Ну вот собственно я и нашёл ответ на свой вопрос: http://1с-интеграция.рф/useful_links/49/375/ в конце статьи есть пример для json. Вот PHP часть: PHP: <?php // 1. Получим строковые данные из входящего файла $json_filedata = file_get_contents('php://input'); // 2. Отрежем все лишнее (добавляются 2 служебных символа), что // мешает преобразованию из JSON $jsData = trim(ltrim($json_filedata)); $dlinaStr = strlen($jsData); $_jsData = ''; $i=1; while ($i<$dlinaStr) { if ($i>2) { $_jsData = $_jsData.substr($jsData, $i, 1); } $i++; } // 3. Преобразуем данные из JSON в объект (структуру) $mData = json_decode($_jsData); // 4. Сформируем другую структуру, которую заполним данными и // вернем в 1С class returnData { var $v1; var $v2; } $sReturnData = new returnData; $sReturnData->v1 = $mData->param1; $sReturnData->v2 = $mData->param2; // 5. Преобразуем данные структуры в JSON строку $json_returnData = json_encode($sReturnData); // 6. Вернем данные в 1С (выводимые данные будут перенаправлены в файл, который и вернется в 1С) echo $json_returnData; ?> Обратите внимание, как они отрезают первые 2-а символа. Режут по одному символу и складывают в новую строку. Лично у меня такой способ не работает. Вылетает по таймауту - ответ то у меня огого какой длинный. Переделывал, чтобы отрезало сразу всё встроенными функциями, не помогает... Одна надежда, что 1С программист реализовал механизм каким то своим способом. Тогда впереди переделка его сервиса и попытка заново преобразовать json. Отсюда я делаю вывод, что: 1. Нужно показать эту ссылку 1С программисту. Так ли он делал. 2. Для взаимодействия с PHP использовать не такой экзотический способ, а стандартную публикацию rest-сервиса, поддерживаемую 1С и более современную. Данный способ прекрасно работает. Проверял из Sharepoint (встроенными средствами) без использования C#, из JavaScript. Приведу свой пример одной функции из JS (с вкраплениями ASPX), но тоже самое, если преобразовать, естественно будет работать и для PHP. Код (Javascript): function sec() { var xhttp = new XMLHttpRequest(); var sURL = "/_vti_bin/DogovorService/DogovorService.svc/GetChatByDogovorId/<%= dogID.Value %>/" + document.getElementById("<%= lastTime.ClientID %>").value + "?_=" + new Date().getTime(); // Добавляем время для удаления эффекта кэша xhttp.open("GET", sURL, false); xhttp.setRequestHeader("Content-type", "text/plain"); xhttp.withCredentials = true; xhttp.send(); var response = JSON.parse(xhttp.responseText); var post = response.lastPosts; post = post.replace(/\n/g, "<br />"); document.getElementById("<%= ChatBox.ClientID %>").innerHTML = post + document.getElementById("<%= ChatBox.ClientID %>").innerHTML; var T = response.lastTime; var sLastTime = T.substring(0, 2) + T.substring(3, 5) + T.substring(6, 10) + T.substring(11, 13) + T.substring(14, 16) + T.substring(17, 19); document.getElementById("<%= lastTime.ClientID %>").value = sLastTime; } Всем спасибо, кто помогал. Всё же вопросы связанные с взаимодействием с 1С, нужно смотреть на профильных сайтах, уж больно специфичны реализации стандартных вещей бывают, как оказалось.
А ответ мы ранее видели в выводе как json, поскольку, как правильно заметил Fell-x27, 1С формирует строку для eval, но только наверно не для PHP (хотя конкатенация php-шная, но может JS отсылает строку PHP ), а для JavaScript. JS выполняется на стороне клиента в браузере, мы получаем json c BOM. Видно, что перед выводом eval как раз есть 2-а лишних символа, которые предположительно и удаляются в найденном на сайте скрипте.
Подключился к локальной 1С, которая публикует Rest сервис при помощи PHP кода: PHP: <?php $username = "username"; $password = "pssword"; $remote_url = 'http://Внутренний_IP/myrest/odata/standard.odata/Catalog_АктуальныеСотрудники?$format=json'; $opts = array( 'http'=>array( 'method'=>"GET", 'header' => "Authorization: Basic " . base64_encode("$username:$password") ) ); $context = stream_context_create($opts); $file = file_get_contents($remote_url, false, $context); $txt = json_decode ($file, true); foreach ($txt as $key => $value) echo($value); ?> REST рулит! Никаких головников. Вывод в браузере: HTML: http://ВнутреннийIP/myrest/odata/standard.odata/$metadata#Catalog_АктуальныеСотрудникиArray
Господи, какие костыли, господи, какая дичь Зачем? 2014 год. Документация по 1С v8. Формирование/чтение нормального человеческого JSON встроенными методами. Нахрена эти вот костыли было городить? Можно ведь просто почитать документацию.
Оффтоп. Когда-то почитать "просто" не получилось. Меня в депрессию вгоняет их Excel-подобный код Код (Text): Для каждого А из Б Цикл // ... КонецЦикла; // или Массив = Новый Массив; --- Добавлено --- P.S. Сейчас обратил внимание, что код у них в документации выложен в скринах. Наверно это их коллеги изредка заходят на форум проконсультироваться? ))