Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

java.net.UnknownServiceException: no content-type

79 views
Skip to first unread message

Daniel Bleisteiner

unread,
Apr 17, 2003, 5:55:47 AM4/17/03
to
Hallo zusammen!

Ich habe gerade ein Problem mit einer URL, deren Content ich auslesen will.
Ich verwende zum Abfragen den folgenden Code:

new URL("http://url/script?parameter").getContent()

Leider wird in diesem Fall eine Exception erzeugt, obwohl die URL
nachweislich abgefragt wird (es handelt sich in meinem Anwendungsfall um
eine DirectAction in WebObjects). Der Request kommt also beim Server an,
die Rückgabe wird aber anscheinend von Java nicht akzeptiert - oder wie
soll ich den Fehler deuten?

java.net.UnknownServiceException: no content-type
at java.net.URLConnection.getContentHandler(URLConnection.java:1059)
at java.net.URLConnection.getContent(URLConnection.java:583)
at java.net.URL.getContent(URL.java:974)

In der DirectAction in WebObjects setze ich definitiv "text/plain" als
"content-type" im Header des Response.

Kennt jemand das Problem?

--
Daniel Bleisteiner

Matthias Ernst

unread,
Apr 17, 2003, 6:00:56 AM4/17/03
to
Daniel Bleisteiner wrote:

> Hallo zusammen!
>
> Ich habe gerade ein Problem mit einer URL, deren Content ich auslesen
> will. Ich verwende zum Abfragen den folgenden Code:
>
> new URL("http://url/script?parameter").getContent()

...


> In der DirectAction in WebObjects setze ich definitiv "text/plain" als
> "content-type" im Header des Response.

Da das nur eine GET-URL ist, wuerde ich das mal per Hand verifizieren:
telnet host 80
GET /script?parameter HTTP/1.0
<leerzeile>

Dann weisst Du schonmal mehr.
Matthias
--
Matthias Ernst
Software Engineer

CoreMedia - Smart Content Technology

Daniel Bleisteiner

unread,
Apr 17, 2003, 6:23:29 AM4/17/03
to
On Thu, 17 Apr 2003 12:00:56 +0200, Matthias Ernst
<matthia...@coremedia.com> wrote:
> Da das nur eine GET-URL ist, wuerde ich das mal per Hand verifizieren:
> telnet host 80
> GET /script?parameter HTTP/1.0
> <leerzeile>
>
> Dann weisst Du schonmal mehr.
> Matthias

Da kommt das folgende bei mir zurück:

HTTP/1.1 200 Apple
Date: Thu, 17 Apr 2003 10:22:16 GMT
Server: Apache/1.3.20 (Darwin)
cache-control: private, no-cache, max-age=0
content-disposition: filename=result.txt
expires: Thu, 17 Apr 2003 10:22:18 GMT
pragma: no-cache
content-length: 39
Connection: close
Content-Type: text/plain

Dummy Return!

Was stimmt also nicht?

--
Daniel Bleisteiner

Matthias Ernst

unread,
Apr 17, 2003, 7:08:07 AM4/17/03
to
Daniel Bleisteiner wrote:

> Da kommt das folgende bei mir zurück:

...
> Content-Type: text/plain
...

Dann ist der naechste Test wohl, was
url.openConnection().getContentType() zurueckgibt. Man wuerde vermuten,
'null', erwarten 'text/plain', aber wer weiss ?

Falls dem so ist, solltest Du Dich nach einem anderen Http-Client umsehen
...

Lars Stegelitz

unread,
Apr 17, 2003, 11:50:31 AM4/17/03
to
Hallo


[...]


> um eine DirectAction in WebObjects). Der Request kommt also beim

[...]

OMG, noch jemand, der sich mit WebObjects herumschlagen 'darf' :D
Willkommen im Club 'Die sich über WO ärgern' :-)

Welche Version WO ? Und hast du den Fehler nur im Developemnt
oder auch im Deploymode ? achja, den Code der DirectAction
wäre auch noch interessant. und wenn du grade dabei bist, schreib
auch mal die richtige URL hier hin ;)

Habs grade mal ausprobiert, bei mir klappts einwandfrei.
(Ich benutze WO 5.1.3 und Java 1.3.01)

aus der DirectAction.java (WO):

public WOActionResults testAction() {
String message = "Hallo, dies ist ein Test!!";
WOResponse resp = new WOResponse();
resp.setHeader("text/plain", "content-type");
resp.setContent(new NSData(message.getBytes()));
return resp;
}


'normales' Java ;-) :

URL url = new
URL(http://localhost:2019/cgi-bin/WebObjects.exe/Test.woa/wa/test);
Object obj = url.getContent();
// das Object ist ein InputStream !
InputStream in = (InputStream)obj;

byte buff[] = new byte[1024];
StringBuffer sBuffer = new StringBuffer();
int read = -1;

while( (read=in.read(buff)) != -1) {
sBuffer.append(new String(buff));
}
in.close();
System.out.println(sBuffer.toString());


Ergibt in der Ausgabe:
Hallo, dies ist ein Test!! (plus ein paar Müllzeichen, aber egal)

--
MfG

Lars Stegelitz

Building Systems AG - Amsterdamer Str. 230 - 50735 Köln
Web: http://www.bsy.de mailto:la...@bsy.de


Daniel Bleisteiner

unread,
Apr 18, 2003, 5:52:15 AM4/18/03
to
On Thu, 17 Apr 2003 17:50:31 +0200, Lars Stegelitz <la...@bsy.de> wrote:
> Welche Version WO ? Und hast du den Fehler nur im Developemnt
> oder auch im Deploymode ? achja, den Code der DirectAction
> wäre auch noch interessant. und wenn du grade dabei bist, schreib
> auch mal die richtige URL hier hin ;)

Ich schlag mich gezwungermaßen noch mit alten WO 4.5.1 rum... und da sogar
Objective-C - was hier ein wenig OT wäre.

> public WOActionResults testAction() {
> String message = "Hallo, dies ist ein Test!!";
> WOResponse resp = new WOResponse();
> resp.setHeader("text/plain", "content-type");
> resp.setContent(new NSData(message.getBytes()));
> return resp;
> }

DIe DirectAction sieht in etwa genauso aus... ich hab im WOResponse
allerdings ein paar weitere Header gesetzt... vermutlich muss ich da
erstmal ein paar wegnehmen... Cache und sowas muss ich in meinem
Anwendungsfall eigentlich nicht setzen.

Der Rechner steht allerdings im Büro, wo ich erst am Dienstag wieder
hinkomme... daher muss ich mit weiteren Tests noch warten.

> URL url = new
> URL(http://localhost:2019/cgi-bin/WebObjects.exe/Test.woa/wa/test);
> Object obj = url.getContent();

Hier wird bei mir schon die Exception ausgelöst... no content-type... aber
vielleicht bringt das Aufräumen des Response ja was... ich werd sehen.

> // das Object ist ein InputStream !
> InputStream in = (InputStream)obj;

Das ist gut zu wissen... brauch ich, wenn ich da ankomme.

--
Daniel Bleisteiner

Lars Stegelitz

unread,
Apr 23, 2003, 4:36:02 AM4/23/03
to
Hallo Daniel

War auch bis heute im Kurzurlaub, deswegen ein bisl verspätet :-)

[...]


> Ich schlag mich gezwungermaßen noch mit alten WO 4.5.1 rum... und da
> sogar Objective-C - was hier ein wenig OT wäre.

jaja, das gute alte 4.5.1 :(( hab auch noch ein altes Projekt, das
ich darauf pflegen darf (muss)

Dein Problem könnte durchaus von der Java-ObjC-bridge herrühren,
obwohl ich es selber nicht reproduzieren kann (zumindest nicht auf
der Development-Seite, habs grad nochmal auf 4.5.1 ausprobiert).
Bliebe eigentlich nur noch die Frage, welchen Patch für 4.5.1 du
laufen hast (imho ist Update 4 der letzte patch gewesen, im about
sollte sich 'Update 4 Kali4A4' melden)

>> public WOActionResults testAction() {
>> String message = "Hallo, dies ist ein Test!!";
>> WOResponse resp = new WOResponse();
>> resp.setHeader("text/plain", "content-type");
>> resp.setContent(new NSData(message.getBytes()));
>> return resp;
>> }
>
> DIe DirectAction sieht in etwa genauso aus... ich hab im WOResponse
> allerdings ein paar weitere Header gesetzt... vermutlich muss ich da
> erstmal ein paar wegnehmen... Cache und sowas muss ich in meinem
> Anwendungsfall eigentlich nicht setzen.

Jo, nichts magisches dabei...
Die cache-control header machen eigentlich nur Ärger bei manchen
Proxy's bzw. Firewalls, die auf 'Fremdartige' header allergisch
reagieren. Im direct-connect Modus sind die aber belanglos :)

Nimm mal *alle* header bis auf den Content-type weg (ggfs.
Content-length setzen)...

Hast du evtl. andere Software installiert, die dem WO dazwischen
funken könnte ? (z.B. ein gcc mit neueren libs, die sich WO plötzlich
krallt).

> Der Rechner steht allerdings im Büro, wo ich erst am Dienstag wieder
> hinkomme... daher muss ich mit weiteren Tests noch warten.
>
>> URL url = new
>> URL(http://localhost:2019/cgi-bin/WebObjects.exe/Test.woa/wa/test);
>> Object obj = url.getContent();
>
> Hier wird bei mir schon die Exception ausgelöst... no content-type...
> aber vielleicht bringt das Aufräumen des Response ja was... ich werd
> sehen.
>
>> // das Object ist ein InputStream !
>> InputStream in = (InputStream)obj;
>
> Das ist gut zu wissen... brauch ich, wenn ich da ankomme.

Naja, solche Sachen stehen nicht in der Doku (die sowieso für den
A.... ist), richtiges Debuggen ist auch nicht wirklich machbar,
ich arbeite meistens mit System.out Ausgaben (so auch in diesem
Fall :-)).

Ich arbeite nun seit etwa 2,5 Jahren mit WO (hab mit Version 4
begonnen) und *hasse* es ernsthaft ! Die Entwicklungsumgebung
unter Windows ist ein Witz, von der Doku ganz zu schweigen...
support ? was ist das ? Von Apple-Seite aus wird man ziemlich
im Regen stehen gelassen, meine Hauptinformationsquelle ist
www.omnigroup.com - vielleicht findest du ja in den Archiven
noch Hinweise zu deinem Problem :-/

Daniel Bleisteiner

unread,
Apr 23, 2003, 4:48:14 AM4/23/03
to
On Wed, 23 Apr 2003 10:36:02 +0200, Lars Stegelitz <la...@bsy.de> wrote:
> War auch bis heute im Kurzurlaub, deswegen ein bisl verspätet :-)

Hat hoffentlich gefallen ;)

> Dein Problem könnte durchaus von der Java-ObjC-bridge herrühren,
> obwohl ich es selber nicht reproduzieren kann (zumindest nicht auf
> der Development-Seite, habs grad nochmal auf 4.5.1 ausprobiert).
> Bliebe eigentlich nur noch die Frage, welchen Patch für 4.5.1 du
> laufen hast (imho ist Update 4 der letzte patch gewesen, im about
> sollte sich 'Update 4 Kali4A4' melden)

Mein Problem ist vielleicht auch, dass ich das ganze noch auf dem alten
MacOS X Server (pre MacOS X) laufen habe... die Updates sind soweit alle
drauf.

> Nimm mal *alle* header bis auf den Content-type weg (ggfs.
> Content-length setzen)...

Im Moment lebe ich ich einfach damit, dass ich die Exception ignoriere.
Sollte ich doch mal Probleme damit bekommen, werde ich mich nochmal damit
auseinandersetzen. Danke erstmal!

> Ich arbeite nun seit etwa 2,5 Jahren mit WO (hab mit Version 4
> begonnen) und *hasse* es ernsthaft ! Die Entwicklungsumgebung

Ich seit 3 Jahren... 3.5 war mein Anfang... kurz danach 4.0... man kommt
damit klar... aber richtig Spaß macht es nicht. Ich würde lieber direkt
Java programmieren und mich auf modernere ApplicationServer für Java
verlassen. Mal sehen, was die Zeit bringt.

> unter Windows ist ein Witz, von der Doku ganz zu schweigen...
> support ? was ist das ? Von Apple-Seite aus wird man ziemlich
> im Regen stehen gelassen, meine Hauptinformationsquelle ist

Dem kann ich nur zustimmen... Apple hat eine grausame InfoPolitik - ganz zu
schweigen von der ignoranten Haltung gegenüber alten WO-Kunden. Wir haben
direkte Kontakte zu Apple Deutschland (Gerrit Winter) und selbst er kann
kaum etwas bewirken, wenn nach einem neuen Update von MacOS X mal wieder
nix geht. Die Quittung dafür wird sicher bald kommen...
Soweit erstmal... den Thread können wir glaube ich schliessen...
--
Daniel Bleisteiner

0 new messages