Avatar billede aero Nybegynder
20. november 2010 - 00:31 Der er 13 kommentarer og
1 løsning

Overload resolution failed because no accessible 'Create' accepts this number of arguments.

Hej

Jeg får denne fejl
Overload resolution failed because no accessible 'Create' accepts this number of arguments.

ang. System.Net.WebRequest.Create()

(ekstra spm. hvorfor kommer denne fejl !?
Validation (XHTML 1.0 Transitional): Element 'head' occurs too few times.
Ang. mit head start tag..)

Når jeg har denne kode:
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>
<%@ Page Language="vb" AutoEventWireup="false" %>
<script language="vb" runat="server">
  Sub Page_Load(ByVal Src As Object, ByVal E As EventArgs)
        myPage.Text = readHtmlPage("http://www.google.dk")
  End Sub

  Function readHtmlPage(ByVal url As String) As String
      Dim result As String = ""
      Dim strPost As String = "x=1&y=2&z=YouPostedOk"
      Dim myWriter As StreamWriter
     
        Dim objRequest As HttpWebRequest = System.Net.WebRequest.Create()
      objRequest.Method = "POST"
      objRequest.ContentLength = strPost.Length
      objRequest.ContentType = "application/x-www-form-urlencoded"
     
      Try
        myWriter = new StreamWriter(objRequest.GetRequestStream())
        myWriter.Write(strPost)
      Catch e As Exception
        return e.Message
      Finally
        myWriter.Close()
      End Try
     
      Dim objResponse As HttpWebResponse = objRequest.GetResponse()
      Dim sr As StreamReader
      sr = New StreamReader(objResponse.GetResponseSTream())
      result = sr.ReadToEnd()
      sr.Close()
     
      Return result
  End Function
</script>
<html>
<body>
<asp:literal id="myPage" runat="server"/>
</body>
</html>
Avatar billede arne_v Ekspert
20. november 2010 - 00:59 #1
WebRequest.Create()

skal være:

WebRequest.Create(url)
Avatar billede arne_v Ekspert
20. november 2010 - 01:01 #2
Med hensyn til XHTML fejlen så er del fordi du inkluderer en side inkl. <html><head></head><body></body></html> inden i din body.
Avatar billede aero Nybegynder
20. november 2010 - 11:52 #3
Okay det hjalp men får så denne fejl ang.
myWrite.Close()

Variable 'myWriter' is used before it has been assigned a value. A null reference exception could result at runtime.

og når jeg køre scriptet så viser den ikke google.dk men bare en tom/blank side.
Avatar billede arne_v Ekspert
20. november 2010 - 14:04 #4
Bare sæt myWriter til Nothing lige før Try

og test for Nothing i Finally

compileren brokker sig fordi den ikke er sikker på at muWriter har fået en værdi når finally udføres

endnu bedre: brug Using !
Avatar billede aero Nybegynder
20. november 2010 - 17:34 #5
Ok så ved at bruge Using så kan jeg vel også nøjes med flg. har dog kun et problem med flg. den giver bare en Hvid side, den viser ikke i dette tilfælde google's side.

<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="GrabWeb.aspx.vb" Inherits="WebRequest.GrabWeb" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
<%
    Dim objRequest As HttpWebRequest = System.Net.WebRequest.Create("http://www.google.dk")
    Dim objResponse As HttpWebResponse = objRequest.GetResponse()
    Using reader = New StreamReader(objResponse.GetResponseStream())
        Console.WriteLine(reader.ReadToEnd())
    End Using
%> 
    </div>
    </form>
</body>
</html>
Avatar billede arne_v Ekspert
20. november 2010 - 19:23 #6
Console.WriteLine(reader.ReadToEnd())

udskriver jo ikke til web siden.

Du skal bruge et asp tag og sætte det.
Avatar billede aero Nybegynder
20. november 2010 - 21:19 #7
nej det er rigtigt, beklager men skal lige lære dette :)

Nu har jeg så søgt og læst, men den viser stadigvæk bare en hvid side...

<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="GrabWeb.aspx.vb" Inherits="WebRequest.GrabWeb" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
<%   
    Dim objRequest As HttpWebRequest = System.Net.WebRequest.Create("http://www.google.dk")
    Dim objResponse As HttpWebResponse = objRequest.GetResponse()
    Using reader = New StreamReader(objResponse.GetResponseStream())
        Dim GrabWebLabel As New Label()
        GrabWebLabel.Text = reader.ReadToEnd()
    End Using
%> 
    </div>
    </form>
    <asp:Label id="GrabWebLabel" runat="server"></asp:Label>

</body>
</html>
Avatar billede arne_v Ekspert
20. november 2010 - 23:52 #8
slet linien:

Dim GrabWebLabel As New Label()

fordi GrabWebLabel er denne her:

<asp:Label id="GrabWebLabel" runat="server"></asp:Label>
Avatar billede arne_v Ekspert
20. november 2010 - 23:53 #9
Og hvis det her er web forms, så skal den kode vel laves i page load fremfor i <% %> !?!?
Avatar billede aero Nybegynder
21. november 2010 - 00:38 #10
Så virker det, tak. vil du smide et svar...lige et tillægs spm. ang. dette hvis den viser firkanter for æøå, hvad skal jeg smide ind så den læser og viser æøå som de er !?

<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>
<%@ Page Language="vb" AutoEventWireup="false" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
<%   
    Dim objRequest As HttpWebRequest = System.Net.WebRequest.Create("http://www.google.dk")
    Dim objResponse As HttpWebResponse = objRequest.GetResponse()
    Using reader = New StreamReader(objResponse.GetResponseStream())
        GrabWebLabel.Text = reader.ReadToEnd()
    End Using
%> 
    <asp:Label id="GrabWebLabel" runat="server"></asp:Label>

</body>
</html>
Avatar billede arne_v Ekspert
21. november 2010 - 02:24 #11
svar
Avatar billede arne_v Ekspert
21. november 2010 - 02:25 #12
Firkanter for ÆØÅ plejer at betyde at din server eller dit script fortæller browseren at indholdet er UTF-8 mens indholdet faktisk er ISO-8859-1.
Avatar billede aero Nybegynder
21. november 2010 - 10:03 #13
og det kan ikke løses med en lille stump kode !?
Avatar billede arne_v Ekspert
21. november 2010 - 18:10 #14
En god løsning er ikke triviel.

Men du kan prøve:

<%@ Page Language="vb" AutoEventWireup="false" ContentType="text/html; charset=ISO-8859-1" %>

som et dirty hack.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester