का उपयोग कर एक एकल पेज प्रॉक्सी बनाना मैं एक विशिष्ट वेब पेज के लिए एक साधारण प्रॉक्सी बनाने के लिए रूबी सिनात्रा का उपयोग करने की कोशिश कर रहा हूं। मैं सी # में कर सकते हैं, मैं सिर्फ सिनात्रा के लिए इस पर काम नहीं कर पा रहे, सी # कोड के नीचे है:रूबी सिनात्रा
इस प्रकार<%@ WebHandler Language="C#" Class="Map" %>
using System;
using System.Web;
using System.Net;
using System.IO;
public class Map : IHttpHandler {
static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[0x1000];
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
output.Write(buffer, 0, read);
}
public void ProcessRequest(HttpContext context)
{
string gmapUri = string.Format("http://maps.google.com/maps/api/staticmap{0}", context.Request.Url.Query);
WebRequest request = WebRequest.Create(gmapUri);
using (WebResponse response = request.GetResponse())
{
context.Response.ContentType = response.ContentType;
Stream responseStream = response.GetResponseStream();
CopyStream(responseStream, context.Response.OutputStream);
}
}
public bool IsReusable {
get {
return false;
}
}
}
रूबी सिनात्रा कोड मैं कोशिश की है है:
require 'rubygems'
require 'sinatra'
get '/mapsproxy/staticmap' do
request.path_info = 'http://maps.google.com/maps/api/staticmap'
pass
end
मुझे लगता है कि सिनात्रा कोई काम नहीं करता है (404 प्राप्त करें) क्योंकि केवल उसी डोमेन में पृष्ठों के अनुरोध को पास कर रहा है। किसी भी ढेर की सराहना की जाएगी।
संपादित करें:
टिन मनुष्य की मदद मैं एक अच्छा संक्षिप्त समाधान है, जो मेरे लिए अच्छी तरह से काम ले कर आए हैं के साथ:
get '/proxy/path' do
URI.parse(<URI> + request.query_string.gsub("|", "%7C")).read
end
सभी मदद के लिए धन्यवाद।
चीयर्स। यह आशाजनक दिख रहा है ... मैं बस सामान की कोशिश कर रहा हूं ... –
आपको कुछ अपवाद हैंडलिंग जोड़ने की आवश्यकता होगी, और शायद अनुरोध लेने पर बेहतर नियंत्रण प्रदान करने के लिए 'टाइमआउट' मॉड्यूल का उपयोग करना चाहेंगे लंबा। Http://stackoverflow.com/questions/4964044/using-open-uri-to-fetch-xml-and-the-best-practice-in-case-of-problems-with-a-remo/4966240#4966240 देखें उदाहरण के लिए। –
यह पाठ आधारित प्रतिक्रियाओं के साथ ठीक काम करता प्रतीत होता है, हालांकि यह उन्हें दोबारा सुधारता है, लेकिन छवियों को नहीं। मुझे लगता है कि मुझे सिनात्रा प्रतिक्रिया के जवाब को किसी भी तरह से स्ट्रीम करने की जरूरत है ... –