2013-01-17 19 views
7

'dan bir başlık nasıl kaldırılır, veri oluşturmaz, veriyi kabul etmeyen bir dosya yükleme hizmetiyle konuşuyorum. Varsayılan olarak, java'nın HttpURLConnection, Content-Type başlığını application/x-www-form-urlencoded olarak ayarlar. Saf veri gönderiyorumsa bu yanlış bir şey.URLConnection

i (müşteri) içerik türünü bilmiyor, bu yüzden Content-Type başlığının hiç ayarlanmasını istemiyorum. Hizmetin içerik türünde tahmin edeceği bir özellik vardır (dosya adına bağlı olarak, dosyadan bazı verileri okumak vb.).

Bir başlığı nasıl kaldırırım? çıkarma başlığı yok ve null'a ayarlanması değeri değiştirmiyor ve boş dizgiye ayarlayarak, başlıkta hiçbir değer olmadan ayarlanmış sonuçlar çıkıyor.

+1

Bunun için herhangi bir yol buldunuz mu? Android ve sade JSE üzerinde çalışabilen bir kütüphane üretmem gerektiğinden, – Arya

cevap

1

Kullanım Apache HttpClient yerine URLConnection

kullanın ben bu yaklaşımı test değil ama bu deneyebilirsiniz isteği

kullanım removeHeader()

+0

bir seçenek değil. w/android sorunu, herhangi bir bağımsız sürümle eşleşmeyen httpclient'in bir 4.x sürümünü paketlemesidir. httpclient'in belirli bir sürümünü paketlemeye çalışırsanız çakışma olur. –

+0

Google Görsel Arama'yı (özel arama özelliğini kullanmadan) kullanan bir bot uygulamasına çalışıyorum ve Google Görsel Arama, "İçerik Türü" ve "İçerik Uzunluğu" başlıklarını göndermiyor, dolayısıyla aynı sorunla karşılaşıyorum. Ve apache httpcomponents HttpClient da benim durumumda uymuyor: HttpClient SOCKS proxy desteklemiyor (bir tweak gerek ve bunu sevmiyorum). –

1

oluşturmak için Request akıcı:

HttpURLConnection'ı genişletin ve getContentHandler() ve setContentHandler (...) yöntemlerini geçersiz kılarak deneyin. Muhtemelen bu işe yarayacak, getContentHandler() koduna bir göz atacaksınız.

0

"İçerik Türü üstbilgisini hiç istemiyorum" ifadesini ne demek istiyorsunuz?

Tarayıcı (veya diğer http istemcisi) posta isteğinizi sunucuya gönderir, böylece sunucuyu, parametreleri kodladığı şekilde bilgilendirmesi gerekir.

İçerik Türü üstbilgisi ayarlanmamışsa, sunucu tarafında siz (= sunucunuz) alınan verilerin nasıl ayrıştırılacağını anlayamazsınız.

İçerik Türü ayarlamazsanız, varsayılan değer kullanılır.

  1. Gönder anahtar/değer çiftleri:

    Tarayıcı (veya diğer http istemci) iki şey yapmak gerekir.

  2. Sunucuya anahtar/değer çiftlerinin nasıl kodlandığını bildirin.

Bu başlıktan tamamen kurtulmak imkansızdır.

+0

Parametre göndermiyorum. dosya yükleme. İkili veri gönderiyorum. Hizmet, ikili içeriği olduğu gibi kaydeder.İçerik türüne gereksinim duymasının tek nedeni, dosya için meta verileri belirlemektir. –

+0

Bir görüntü dosyasını Google Görsel Arama'ya yüklerseniz, tarayıcı 'İçerik Türü 'başlığını göndermez ve' İçerik Uzunluğu' başlığı da eksik. –

0

Sadece bunu başlığını null olarak ayarlayarak başardım.

connection.setRequestProperty(MY_HEADER, null);