получить байт [] с сайта asp.net с веб-запросом - PullRequest
0 голосов
/ 28 сентября 2011

Мне нужно получить информацию с веб-сайта. этот сайт не предназначен для доступа из браузера. так скажем, что веб-сайт содержит байтовый массив: я хочу получить этот байтовый массив из консольного приложения.

// c# code for asp website
protected byte[] data;
protected void Page_Load(object sender, EventArgs e)
{
    data = new byte[] { 1, 100, 200, 255 };  // the byte array that I want to send
}

// the asp content
<body>
    <form id="form1" runat="server">
       <div>
          <%=data%>
       </div>
   </form>
</body>

если бы 'data' была строкой, я мог бы получить ее, проанализировав переменную responseFromServer, определенную в следующем коде.

        // Create a request using a URL that can receive a post. 
        WebRequest request = WebRequest.Create("http://localhost:4444/WebSite2/HelloFromC.aspx");
        // Set the Method property of the request to POST.
        request.Method = "POST";
        // Create POST data and convert it to a byte array.
        string postData = "This is a test that posts this string to a Web server.";
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        // Set the ContentType property of the WebRequest.
        request.ContentType = "application/x-www-form-urlencoded";
        // Set the ContentLength property of the WebRequest.
        request.ContentLength = byteArray.Length;
        // Get the request stream.
        Stream dataStream = request.GetRequestStream();
        // Write the data to the request stream.
        dataStream.Write(byteArray, 0, byteArray.Length);
        // Close the Stream object.
        dataStream.Close();
        // Get the response.
        WebResponse response = request.GetResponse();
        // Display the status.
        Console.WriteLine(((HttpWebResponse)response).StatusDescription);
        // Get the stream containing content returned by the server.
        dataStream = response.GetResponseStream();
        // Open the stream using a StreamReader for easy access.
        StreamReader reader = new StreamReader(dataStream);
        // Read the content.
        string responseFromServer = reader.ReadToEnd();
        // Display the content.
        Console.WriteLine(responseFromServer);
        // Clean up the streams.
        reader.Close();
        dataStream.Close();
        response.Close();

Вещи, которые я пробовал:

Я попытался преобразовать байтовый массив {1, 100, 200, 255} в ASCII. затем с помощью класса кодирования преобразует его обратно в байтовый массив. проблема с ASCII состоит в том, что он не содержит 256 символов. Может быть, я должен использовать другой тип кодировки. Но я должен убедиться, что мой класс кодирования поддерживается моим сайтом ...

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Следуя вышеприведенным комментариям, вы могли бы взглянуть на это руководство по обработчикам (как подсказал Крис Лайвли) http://www.dotnetperls.com/ashx

Это также может помочь дать еще несколько подробностей об окончанииЦель.Вы всегда пытаетесь вытолкнуть массив байтов?Если это так, возможно, веб-сервис может помочь. Учебник по веб-сервису

Как вы будете использовать эти данные?На другой веб-странице или в приложении для Windows?

1 голос
/ 28 сентября 2011

используйте что-то похожее на

byte[] myBinaryResponse = new byte[response.ContentLength];
response.GetResponseStream().Read (myBinaryResponse, 0, myBinaryResponse.Length);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...