2010-04-17 4 views
0

브라우저에서 제대로 작동하는 ASP.NET MVC 앱이 있습니다.HttpWebRequest를 사용하여 파일의 페이지를로드하려고 시도합니다.

검색된 페이지의 html을 파일에 쓰려면 다음 코드를 사용하고 있습니다. (이것은 PDF 변환 구성 요소에서 사용됩니다)

하지만이 코드는 계속 나오지만 브라우저에는 나타나지 않습니다.

때때로 타임 아웃 오류가 500 개의 오류가 발생합니다.

Public Function GetPage(ByVal url As String, ByVal filename As String) As Boolean 

     Dim request As HttpWebRequest 
     Dim username As String 
     Dim password As String 
     Dim docid As String 
     Dim poststring As String 
     Dim bytedata() As Byte 
     Dim requestStream As Stream 

     Try 
      username = "pdfuser" 
      password = "pdfuser" 
      docid = "docid=inv12154" 
      poststring = String.Format("username={0}&password={1}&{2}", username, password, docid) 
      bytedata = Encoding.UTF8.GetBytes(poststring) 

      request = WebRequest.Create(url) 
      request.Method = "Post" 
      request.ContentLength = bytedata.Length 
      request.ContentType = "application/x-www-form-urlencoded" 
      requestStream = request.GetRequestStream() 
      requestStream.Write(bytedata, 0, bytedata.Length) 
      requestStream.Close() 
      request.Timeout = 60000 

      Dim response As HttpWebResponse 
      Dim responseStream As Stream 
      Dim reader As StreamReader 
      Dim sb As New StringBuilder() 
      Dim line As String = String.Empty 

      response = request.GetResponse() 
      responseStream = response.GetResponseStream() 

      reader = New StreamReader(responseStream, System.Text.Encoding.ASCII) 

      line = reader.ReadLine() 
      While (Not line Is Nothing) 
       sb.Append(line) 
       line = reader.ReadLine() 
      End While 

      File.WriteAllText(filename, sb.ToString()) 


     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 
     Return True 

    End Function 
+0

어떤 타임 라인 오류가 발생합니까? – Kane

답변

0

코드를 단순화하고 스트림 및 스트림 리더와 같은 일회용 리소스를 삭제하는 것이 좋습니다. WebClient도 사용할 수 있습니다.

Using client = New WebClient() 
    Dim values = New NameValueCollection() 
    values.Add("username", "pdfuser") 
    values.Add("password", "pdfuser") 
    values.Add("docid", "inv12154") 
    Dim result = client.UploadValues(url, values) 
    File.WriteAllBytes(filename, result) 
End Using 
관련 문제