Мне нужно отладить приложение XML-RPC, которое отправляет ответы XML через HTTP. У меня есть образец XML-ответа (т.е. данные с сервера, отправленные клиенту, который не работает), я бы хотел отладить свое приложение. В идеале мне нужен простой HTTP-сервер, который будет обслуживать один файл в ответ на все запросы. Кто-то просит /
? Отправьте им этот файл. Кто-то пишет в /server/page.php
с определенным файлом cookie? Просто отправьте им этот файл. Меня не волнует многопоточность или безопасность. Мне нужно будет использовать это только в течение нескольких часов для отладки. Имею рут на машине.
то есть я надеюсь, что есть что-то столь же простое в использовании, как это:
simple_http_server -p 12445 -f my_test_file
Я знаю о питоне SimpleHTTPServer
модуль, но я не уверен, как заставить его работать в этом случае.
Если у вас есть inetd
установлены, просто создайте сценарий вроде (Ошибся, скрипт не нужен)
#! / bin / bash
кошка $ 1
затем добавьте строку в inetd.conf
http stream tcp nowait root /bin/cat cat /some/other/dir/file.txt
С Python просто расширьте BaseHTTPServer.BaseHTTPRequestHandler
класс и определить do_GET
метод, затем запустите, как описано в документация, например
import BaseHTTPServer
class HTTPHandlerOne(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self): self.wfile.write("test\r\n")
def run(server_class=BaseHTTPServer.HTTPServer,
handler_class=BaseHTTPServer.BaseHTTPRequestHandler):
server_address = ('', 8000)
httpd = server_class(server_address, handler_class)
httpd.serve_forever()
run(handler_class=HTTPHandlerOne)
Вы можете добавить правило mod_rewrite к apache vhost, которое перезаписывает все запросы обратно в файл, который вы хотите обслуживать.
<VirtualHost *:80>
ServerName onefilevhost.local
RewriteEngine On
RewriteRule ^/(.*)? http://onefilevhost.local/serve/this/file.txt
</VirtualHost>
Вы можете сделать это с помощью Sinatra вполне легко. Установить sinatra, делая gem install sinatra
и создать test_page.rb
файл вроде этого:
require 'sinatra'
get '/*' do
File.read('/server/page.php')
end
Если у вас нет $RUBYOPT=rubygems
на вашей оболочке добавьте require 'rubygems'
в начале.
Вы можете запустить его с помощью ruby test_page.rb
. По умолчанию он будет прослушивать порт 4567.