Avatar billede koldstar Nybegynder
07. maj 2005 - 17:06 Der er 15 kommentarer og
2 løsninger

Inkluder side fra anden server i PHP, JSP, ASP og ASP.Net

Hej eksperter
Jeg skal bruge nogle eksempler på hvordan man kan hente indhold fra en anden server vha PHP, JSP. ASP og ASP.Net

I ASP, ved jeg man bl.a. kan gøre sådan, men findes der en smartere måde?

Dim objXMLHTTP, xml
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", "http://www.server.dk?parameter=1111", False
xml.Send
Response.Write xml.responseText
Set xml = Nothing
Avatar billede jakobclausen Nybegynder
07. maj 2005 - 17:12 #1
PHP:
include("fil.php");
eller
require("fil.php");

Forskellen på de to funktioner er, at scriptet vil stoppe ved require og filen ikke kan findes. Bruges include, vil scriptet kører videre uden den manglende del..
Avatar billede koldstar Nybegynder
07. maj 2005 - 17:18 #2
Virker det også når det script der inkluderes ligger på en anden server end det script der kalder include("fil.php")

Det skal virke sådan www.server_nummer_1.dk kan inkludere data fra www.server_nummer_2.dk
Avatar billede arne_v Ekspert
07. maj 2005 - 17:26 #3
JSP:

            StringBuffer res = new StringBuffer("");
            URL url = new URL(urlstr);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("GET");
            con.connect();
            BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String line;
            while ( (line = br.readLine()) != null) {
                res.append(line);
                res.append("\r\n");
            }
            con.disconnect();
            String html = res.toString();
Avatar billede arne_v Ekspert
07. maj 2005 - 17:27 #4
ASP.NET:

        WebRequest wr = WebRequest.Create(urlstr);
        string html = new StreamReader(wr.GetResponse().GetResponseStream()).ReadToEnd();
Avatar billede arne_v Ekspert
07. maj 2005 - 17:28 #5
begge kode fragmenterne henter kun indholder med visning kan jo
altid laves med f.eks.:

<%=html%>
Avatar billede koldstar Nybegynder
07. maj 2005 - 18:13 #6
Det er jo helt perfekt. Det hele virker som det skal. Hvis du også ligger et svar arne_v, så kan jeg lukke.
Avatar billede arne_v Ekspert
07. maj 2005 - 18:14 #7
ok
Avatar billede arne_v Ekspert
07. maj 2005 - 19:11 #8
java koden kunne måske forkortes en lille smule da den er klippet ud af en anden kontekst
Avatar billede koldstar Nybegynder
07. maj 2005 - 22:01 #9
Hej Arne
JSP-koden er den eneste jeg ikke har mulighed for at teste selv, men dette burde da virke ik?

StringBuffer res = new StringBuffer("");
URL url = new URL("http://MINURL");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
con.disconnect();
String html = res.toString();

... Og så skal det bare skrives ud på skærmen.. hvordan laver man en response.write i JSP??
Avatar billede arne_v Ekspert
08. maj 2005 - 20:26 #10
response.getWriter().println(...)
Avatar billede arne_v Ekspert
08. maj 2005 - 20:26 #11
Her er et testet komplet JSP eksempel:

<%@ page import="java.net.*,java.io.*" %>
<%
URL url = new URL("http://arne/index.html");
URLConnection con = url.openConnection();
con.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line;
while((line = br.readLine()) != null) {
    response.getWriter().println(line);
}
%>
Avatar billede arne_v Ekspert
08. maj 2005 - 20:27 #12
jeg valgte at udskrive løbende fremfor at samle op i en StringBuffer
Avatar billede koldstar Nybegynder
08. maj 2005 - 20:54 #13
perfekt. Tak!
Avatar billede alvion Nybegynder
09. maj 2005 - 13:16 #14
PHP 4.3.0 eller højere:

<?php
$content = file_get_contents(urlEncode("http://www.server.dk?parameter=1111"));
...
echo $content;
?>
Avatar billede koldstar Nybegynder
09. maj 2005 - 14:44 #15
alvion, er der nogle fordele ved at bruge din metode fremfor jakobclausens?
Eller er begger metoder lige gode?
Avatar billede koldstar Nybegynder
09. maj 2005 - 14:44 #16
begger = begge
Avatar billede alvion Nybegynder
09. maj 2005 - 21:46 #17
Det afhænger af, om du har brug for at "pille" ved outputtet, inden du sender det til brugeren. Hvis nej, så er jakobclausens metode den, der kræver færrest ressourcer af serveren.

Men hvis nu du har brug for at omskrive links i html-outputtet, så det passer med "server-1"'s adresse, så skal du bruge min metode. F.eks.:

<?php
$content = file_get_contents(urlEncode("http://www.server-2.dk?parameter=1111"));

$content = preg_replace("#http://www.server-2.dk#i", "http://www.server-1.dk", $content);

echo $content;
?>
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