Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2012, 13:48   #1
alekseycoder
Новичок
Джуниор
 
Регистрация: 09.09.2008
Сообщений: 1
По умолчанию Проблемы с HttpListener + php gate

Всем привет, я пишу прокси сервер, использовал для этого HttpListener. Все запросы идут через мой прокси сервер на пхп шлюз.
Прокси сервер:

namespace HtppListenerWebServer
{
class Program
{
static void Main(string[] args)
{
if (!HttpListener.IsSupported)
{
//Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
return;
}
HttpListener listener = new HttpListener();

listener.Prefixes.Add("http://*:8561/");

while (true)
{

listener.Start();
IAsyncResult result = listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener);

Console.WriteLine("Waiting for request to be processed asyncronously.");
result.AsyncWaitHandle.WaitOne();
Console.WriteLine("Request processed asyncronously.");
}

listener.Close();
}

public static void ListenerCallback(IAsyncResult result)
{
HttpListener listener = (HttpListener)result.AsyncState;

HttpListenerContext context = listener.EndGetContext(result);
HttpListenerRequest request = context.Request;

System.Collections.Specialized.Name ValueCollection headersCollection = request.Headers;
string headers = "";

foreach (string key in headersCollection.AllKeys)
{
string[] values = headersCollection.GetValues(key);

headers += key + ": " + values[0] + "\r\n";
}

headers = request.HttpMethod + " " + request.RawUrl + " HTTP/1.0\r\n" + headers + "\r\n";

HttpWebRequest werequest = WebRequest.Create("http://phpProxy1") as HttpWebRequest;
werequest.Method = "POST";
werequest.ContentType = "application/x-www-form-urlencoded";

string post_data = "host=" + Program.EncodeTo64(request.UserHost Name) + "&Data=" + Program.EncodeTo64(headers);
byte[] byteArray = System.Text.ASCIIEncoding.UTF8.GetB ytes(post_data);
werequest.ContentLength = byteArray.Length;

Stream dataStream = werequest.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();

HttpWebResponse response = (HttpWebResponse)werequest.GetRespo nse();
using (Stream receiveStream = response.GetResponseStream())
{
HttpListenerResponse responseOut = context.Response;

responseOut.ContentLength64 = response.ContentLength >= 0 ?response.ContentLength : 0;
int bytesCopied = CopyStream(receiveStream, responseOut.OutputStream);
responseOut.OutputStream.Close();
Console.WriteLine("Copied {0} bytes", bytesCopied);
}

}

static public string EncodeTo64(string toEncode)
{
byte[] toEncodeAsBytes

= System.Text.ASCIIEncoding.ASCII.Get Bytes(toEncode);

string returnValue

= System.Convert.ToBase64String(toEnc odeAsBytes);

return returnValue;
}
public static int CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[32768];
int bytesWritten = 0;
while (true)
{
int read = input.Read(buffer, 0, buffer.Length);
if (read <= 0)
break;
output.Write(buffer, 0, read);
bytesWritten += read;
}
return bytesWritten;
}
}
}

phpProxy1 - пхп шлюз:


$host = base64_decode($_POST['host']);
$Data = base64_decode($_POST['Data']);

$stream = fopen('data://text/plain,' . $Data,'r');
$fsok = fsockopen($host, 80, $errno, $errstr, 20);
$BuffLen = 4096;

if($fsok)
{
while ($wbuffer = fread($stream , $BuffLen)) {
fwrite($fsok, $wbuffer);
}

fflush($fsok);

while ($rbuffer = fread($fsok, $BuffLen)) {
echo $rbuffer;
}
}

fflush($fsok);
fclose($fsok);

Проблема в том, что юзая мой прокси, в браузере я получаю текстовый контент

HTTP/1.1 200 OK
Date: Wed, 22 Feb 2012 11:22:41 GMT
Server: Apache

Почему результат запроса отображается как текст ? Кто-нибудь может помочь?
alekseycoder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблемы с php D@rkArt PHP 2 23.02.2012 14:22
Проблемы с kcaptcha (php) AVF83 PHP 5 20.01.2012 19:38
Бесплатная замена Spider Gate SVGuss Безопасность, Шифрование 1 21.03.2011 12:55