Httclient

opa…

Tô com um problema e já procurei de todas as formas resolvê-lo, porém não consegui aí queria ver se alguém sabe…
Estou desenvolvendo uma aplicação android que precisa buscar informações de uma url, mas sempre que tento buscar em específico da url que preciso recebo uma exceção (de outras páginas consigo pegar normalmente…e essa url em questão abre normalmente no browser (existe uma dll na url…pode ser isso?))

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();           
request.setURI(new URI("URL buscada"));
HttpResponse response = client.execute(request);

Pela análise da página tenho o seguinte:

Cabeçalhos de Resposta:

Date Sat, 29 Oct 2011 14:01:56 GMT
Server Microsoft-IIS/6.0
X-Powered-By ASP.NET
Expires Sat, 21 Mar 1981 00:00:00 GMT
Cache-Control post-check: 0, pre-check=0
Content-Encoding deflate
Content-Type text/html
Content-Length 1616

Cabeçalhos de Solicitação:

Host 200.170.170.86
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0) Gecko/20100101 Firefox/7.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection keep-alive
Cache-Control max-age=0

Sempre recebo como resposta um HTTPClienteException (ProtocolException), com a informação de InvalidHeader…
Já tentei setar as informações do header com addHeader(…) , setHeader(…) e nada.

Alguém sabe aí como resolver?

vlww

Bom dia,

Não se esqueça que o protocolo HTTP é um standard do W3C e que deve ser respeitado mesmo por Microsoft no ASP.NET do Server Microsoft-IIS/6.0

http://www.w3.org/Protocols/

Experimente com este programa :

1- Criar um projeto Android no ECLIPSE com ADT

2- no package meter esta classe

3- Testar no emulador e depois no ordifone ou comptafone ( smartphone, mobile, celular, tablete, … etc )

Nota : ordifone = ordinator + phone (versão francesa já que a origem de “ordinateur” é francesa)
comptafone = computador + phone ( (versão inglesa já que a origem de “computador” é inglesa)

4- depois de testar a methode GetHTML deve ser melhorada …

[code]import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HTTP;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

    findViewById(R.id.btnGetURL).setOnClickListener(
			new Button.OnClickListener() {
				@Override
				public void onClick(View v) {
					((TextView) findViewById(R.id.txtResultat)).setText(
							 GetHTML(((EditText)findViewById(R.id.txtURL)).getText().toString(), null));
					
				}
			}
	);
    
}

//=======================================================
// Recupère une page Web
//=======================================================
public String GetHTML(String url, List <NameValuePair> nvps) {
DefaultHttpClient httpClient = new DefaultHttpClient();
try {
HttpResponse res;
URI uri = new URI(url);
if (nvps!=null){
HttpPost methodpost = new HttpPost(uri);
methodpost.addHeader(“pragma”,“no-cache”);
methodpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
res = httpClient.execute(methodpost);
} else {
HttpGet methodget = new HttpGet(uri);
methodget.addHeader(“pragma”,“no-cache”);
res = httpClient.execute(methodget);
}
InputStream data = res.getEntity().getContent();

    	return generateString(data);
    		    	        	
	} catch (URISyntaxException e) {
		e.printStackTrace();
	} catch (ClientProtocolException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
	return "";
}

//=======================================================
// GenerateString 
//=======================================================
static public String generateString(InputStream stream) {
	InputStreamReader reader = new InputStreamReader(stream);
	BufferedReader buffer = new BufferedReader(reader);
	StringBuilder sb = new StringBuilder();
	try { 
		String cur;   
		while ((cur = buffer.readLine()) != null) {   
			sb.append(cur).append("\n");  
		}  
	} catch (IOException e) {  
		e.printStackTrace();  
	}
	try {
		stream.close();
	} catch (IOException e) {
		e.printStackTrace();
	}
	return sb.toString(); 
}

}[/code]

[code]

<?xml version=“1.0” encoding=“utf-8”?>
<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android"
android:orientation=“vertical"
android:layout_width=“fill_parent"
android:layout_height=“fill_parent”
>
<TextView
android:layout_width=“fill_parent"
android:layout_height=“wrap_content"
android:text=”@string/hello”
/>
<EditText android:layout_height=“wrap_content” android:layout_width=“fill_parent” android:text=“http://www.codes-sources.com/” android:id=”@+id/txtURL”></EditText>
<Button android:layout_height=“wrap_content” android:layout_width=“fill_parent” android:text=“Télécharger la page” android:id=”@+id/btnGetURL"></Button>
<TextView android:text=“TextView01” android:id="@+id/txtResultat" android:layout_height=“fill_parent” android:layout_width=“fill_parent”></TextView>
</LinearLayout>[/code]

&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.formation.gethttp" android:versionCode="1" android:versionName="1.0"&gt; &lt;application android:icon="@drawable/icon" android:label="@string/app_name"&gt; &lt;activity android:name=".Main" android:label="@string/app_name"&gt; &lt;intent-filter&gt; &lt;action android:name="android.intent.action.MAIN" /&gt; &lt;category android:name="android.intent.category.LAUNCHER" /&gt; &lt;/intent-filter&gt; &lt;/activity&gt; &lt;/application&gt; &lt;uses-sdk android:minSdkVersion="3" /&gt; &lt;uses-permission android:name="android.permission.INTERNET"&gt;&lt;/uses-permission&gt; &lt;/manifest&gt;