2016-12-29 2 views
-1

kann mir jemand sagen, wie man Inhaltstyp mit gehen ignorieren? Ich kann die ignoreContentType-Methode in Jsoup mit Java aufrufen, aber ich kann keine Methode finden, die in go so geht. Hoffe, jemand wird es mir sagen, danke.Wie ignoriert man den Inhaltstyp mit Golang?

Connection.Response response = Jsoup.connect("http://example.com/") 
      .ignoreContentType(true) 
      .execute(); 
System.out.println(response.body()); 
+0

Warum versuchen Sie den Content-Type zu ignorieren? Ist der Inhaltstyp ein Problem im Code? Und wenn ja, was ist der Fehler, den Sie bekommen? –

+0

nichts Fehler zurück, ich werde einen weiteren Kommentar zu erklären. – henghanan

Antwort

0

ich mein Problem nach dem Lesen Jsoup Quellcode gelöst haben, setzen Sie einfach die Antwort-Header

danke euch.

0

Java jsoup ignoreContentType ist es das Dokument des Content-Type zu ignorieren, wenn die Antwort Parsen.

Die ResponseWriter in Go wird standardmäßig einen Content-Type-Satz zum Ergebnis der Übergabe der ersten 512 Bytes der geschriebenen Daten an DetectContentType hinzufügen.

Sie implementieren können Ihre eigenen ResponseWriter wo Sie Ihre eigenes Set Content-Type zu "" um jeden (möglicherweise falsch) Inhaltstyp aus den Daten der Reaktion abgeleitet zu ignorieren.

func (writer MyOwnResponseWriter) Write(data []byte) (int, error) { 
    writer.Header().Set("Content-Type", "") 
    return len(data), nil 
} 

JimB schlägt in the comments einfach Ihren eigenen Content-Type zu setzen, wie server.go beinhaltet:

//If the Header does not contain a Content-Type line, 
// Write adds a Content-Type set to the result of 
// passing the initial 512 bytes of written data toDetectContentType. 
+0

Sie können auch den Content-Type-Header festlegen - der go http-Server versucht nicht, ihn zu erkennen und zu überschreiben, wenn er bereits vorhanden ist. – JimB

+0

@JimB Ich hätte gedacht, dass der HTTP-Server seine eigene Antwort erstellen könnte, mit einem eigenen Header, abhängig davon, wie der http-Server implementiert ist. – VonC

+0

Ich bin mir nicht sicher, ob ich folge, aber die im 'ReponseWriter' gesetzten Header haben Vorrang bis' WriteHeader' aufgerufen wird. Wenn Sie in der Quelle "server.go" nach "DetectContentType" suchen, können Sie sehen, dass zuerst überprüft wird, ob der Header "Content-Type" festgelegt wurde. – JimB

Verwandte Themen