JSON ausgabe von URLS in einer php datei.

  • Antworten:9
A G
  • Forum-Beiträge: 31

15.07.2012, 14:30:24 via Website

Zuerst mein Json sieht so aus:
1{"charts":[{"id":"2","interpret":"Mike Candys","titel":"2012 (If the world would End)","album":"2012 (If the world would End)","albumcover":"http:\/\/download.feiyr.com\/cover\/65\/1\/7000033789_300.jpg","likes":"15"},...],"success":1}

wie er seht ist in der Url jeder slash mit einem backslash versehen.

Meine PHP Datei

1$result = mysql_query("SELECT * FROM Charts ORDER BY likes DESC") or die(mysql_error());
2
3// check for empty result
4if (mysql_num_rows($result) > 0) {
5 // looping through all results
6 // charts node
7 $response["charts"] = array();
8
9 while ($row = mysql_fetch_array($result)) {
10 // temp user array
11 $charts = array();
12 $charts["id"] = $row["id"];
13 $charts["interpret"] = $row["interpret"];
14 $charts["titel"] = $row["titel"];
15 $charts["album"] = $row["album"];
16 $charts["albumcover"] = $row["albumcover"];
17 $charts["likes"] = $row["likes"];
18
19 // push single product into final response array
20 array_push($response["charts"], $charts);
21 }
22 // success
23 $response["success"] = 1;
24
25 // echoing JSON response
26 echo json_encode($response);
27} else {
28 // no products found
29 $response["success"] = 0;
30 $response["message"] = "Keine Charts";
31
32 // echo no users JSON
33 echo json_encode($response);
34}

Weiß jemand wie ich diese Backslashes wegbekomme? Es scheint nämlich immer einen Fehler zu geben, wenn ich eine URL per EditText in die Datenbank eintragen lassen will.
Er returnt mir für meinen Content dann nicht den JSON Inhalt, sondern:

1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
3
4<head>
5 <title>Webhoster Server - Fehler - FORBIDDEN</title>
6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7</head>
8
9<body>
10
11<center><img src=/errors/403.jpg></center>
12
13</body>
14</html>

Wobei die Paramter übergeben werden. Das ist der Code für meine "Content"-Variable:

1DefaultHttpClient httpClient = new DefaultHttpClient();
2 HttpPost httpPost = new HttpPost(url);
3 httpPost.setEntity(new UrlEncodedFormEntity(params));
4
5 HttpResponse httpResponse = httpClient.execute(httpPost);
6 HttpEntity httpEntity = httpResponse.getEntity();
7 content = EntityUtils.toString(httpEntity, HTTP.UTF_8);

Ich stehe echt aufm Schlauch. Normale Werte übernimmt er ohne Probleme.

— geändert am 15.07.2012, 14:31:15

Antworten
A G
  • Forum-Beiträge: 31

15.07.2012, 21:35:07 via Website

push?

Antworten
A G
  • Forum-Beiträge: 31

17.07.2012, 13:36:46 via Website

Also die slashes werden entfernt - danke dafür schon einmal! Leider gibter mir noch den gleichen Fehler im Debug modus aus.

HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
json = EntityUtils.toString(httpEntity, HTTP.UTF_8);
System.out.println(json);

Bei json = Entity... ist json = "". Die System.out.println Zeile gibt mir dann folgendes aus:

1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
3
4<head>
5 <title>Webhoster Server - Fehler - FORBIDDEN</title>
6 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
7</head>
8
9<body>
10
11<center><img src=/errors/403.jpg></center>
12
13</body>
14</html>

Ich dachte es liegt an den Slashes.

In der PHP Datei habe ich eine Zeile wie folgt geändert:

1$albumcover = str_replace('\\/', '/', $_POST['albumcover']);

Hab ich vllt die falschen Servereinstellungen irgendwie oder liegts doch noch am Quelltext?

Antworten
A G
  • Forum-Beiträge: 31

17.07.2012, 14:57:22 via Website

Wie soll ich herrausfinden, welcher von den Fällen eintritt? Bzw. wie kann ich es ändern? Scheinen ja die Servereinstellungen zu sein, die nicht stimmen.

Antworten
Markus B.
  • Forum-Beiträge: 636

17.07.2012, 15:53:41 via Website

Hi,
du musst in der httpd.conf nachschauen warum der Server das Verzeichnis xy für die URL nicht ausliefert.
Dazu kannst du dann die Logs des Apache hinzuziehen ( Linux: /var/log/apache2/* ).

Gruß,
Markus

Antworten
A G
  • Forum-Beiträge: 31

17.07.2012, 19:03:33 via Website

Also ich arbeite auf einem Onlineserver und im /log Verzeichnis habe ich lediglich nur eine "access_log" (ohne Endung) Datei und einen Ordner old indem, die älteren "access_log"s in rar archiven sind.
In meinen Onlineeinstellungen habe ich einen Punkt "httpd spezial" mit folgenden Punkten:

PHP...
  • safe_mode
  • register_globals
  • open_basedir
  • Webserver mod_rewrite
  • display_errors
  • memory limit
  • upload file size
  • register_long_arrays
  • call_time_pass_reference
  • default_charset
  • magic_quotes_gpc
  • session_save_path
  • url_fopen

hilft das irgendwie weiter?

Antworten
Markus B.
  • Forum-Beiträge: 636

17.07.2012, 21:34:25 via Website

Hi,
das hilft nicht wirklich weiter. Das wäre so wenn ich folgendes von Dir verlangen würde:

Mein Auto hat:
  • Ein Dach
  • Räder
  • Türen
  • Einen Auspuff
Sag mir mal warum es nicht fährt ....

Desweiteren ließ dir doch mal ein paar Informationen an z.B. auf apache.org . Wenn du den Server nutzt musst du diesen auf Dauer doch unter Kontrolle bekommen. Es ist ja nicht Sinn und Zweck der Sache das wir hier deine Software debuggen. Das der gute Harald noch nicht explodiert ist, ist ein Wunder.
Wenn du diese ganze Serveradministration umgehen willst schau dir doch mal die Google AppEngine an. Diese nutzte ich unglaublich gerne und das Teil rockt ziemlich.

Gruß,
Markus

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

17.07.2012, 23:53:36 via Website

Also dieses Frage und Antwortspiel ist extrem mühsam. Ich kann ja verstehen, das jemand Anfänger ist und viele Fragen stellt, aber hier vermisse ich einfach eine gewisse Grundbereitschaft, die einfachsten Dinge mal selber zu lösen oder auch nur zu googlen. So wird das nie etwas mit dem Programmieren.

Viele der hier gestellten Fragen wäre mit einfachsten Logausgaben und deren Interpretation relativ simple zu lösen gewesen.

lg Voss

Antworten