hi sacoskun

Thanks for your suggestion. Yes I had not set the INTERNET permission
in my
AndroidManifest.xml. I have updated that now and the socket exception
has changed
to being about being unable to resolve the domain name of a http proxy
server
I am located behind. I have noticed other threads where http-proxy
usage has been
problematic.

Thanks for your tip.
Best Regards
Graeme

On Aug 22, 7:30 am, sacoskun <[EMAIL PROTECTED]> wrote:
> Did you add <uses-permission
> android:name="android.permission.INTERNET" /> tag to your
> AndroidManifest.xml?
> The new SDK requires that permission for network calls.
>
> sacoskun
>
> On Aug 21, 6:13 pm, Graeme <[EMAIL PROTECTED]> wrote:
>
>
>
> > Hi everyone
>
> > I'm trying to figure out how to use HttpClient 4.x to do POST requests
> > routed via
> > a Proxy server. I'm seeing a socket exception triggered by calling
>
> > DefaultHttpClient.execute(HttpHost target, HttpRequest method). My
> > HttpPoster class looks like
>
> > package com.bt.gcto.android.testhttp;
>
> > import java.io.IOException;
> > import java.util.Hashtable;
>
> > import org.apache.http.Header;
> > import org.apache.http.HttpEntity;
> > import org.apache.http.HttpHost;
> > import org.apache.http.HttpResponse;
> > import org.apache.http.HttpVersion;
> > import org.apache.http.client.HttpClient;
> > import org.apache.http.client.methods.HttpPost;
> > import org.apache.http.conn.ClientConnectionManager;
> > import org.apache.http.conn.params.ConnRoutePNames;
> > import org.apache.http.conn.scheme.PlainSocketFactory;
> > import org.apache.http.conn.scheme.Scheme;
> > import org.apache.http.conn.scheme.SchemeRegistry;
> > import org.apache.http.conn.scheme.SocketFactory;
> > import org.apache.http.conn.ssl.SSLSocketFactory;
> > import org.apache.http.impl.client.DefaultHttpClient;
> > import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
> > import org.apache.http.params.BasicHttpParams;
> > import org.apache.http.params.HttpParams;
> > import org.apache.http.params.HttpProtocolParams;
> > import org.apache.http.util.EntityUtils;
>
> > import android.net.Uri;
> > import android.util.Log;
>
> > public class HttpPoster {
> >        private final String TAG="HttpPoster";
> >            private final String NETWORK_DEVICE_SIDE_TRUE =
> > ";deviceside=true";
> >            private final String NETWORK_DEVICE_SIDE_FALSE =
> > ";deviceside=false";
> >            private final String NETWORK_WIFI = ";interface=wifi";
> >            //private final String proxy="proxy.intra.bt.com:8080";
> >            private boolean useWifi;
> >            private boolean deviceSide;
> >            // Apache HttpClient 4.x stuff
> >            private static HttpParams defaultParameters = null;
> >            private static SchemeRegistry supportedSchemes = null;
>
> >            /**
> >              * Performs general setup.
> >              * This should be called only once.
> >              */
> >             private final static void setup() {
>
> >                 supportedSchemes = new SchemeRegistry();
>
> >                 // Register the "http" and "https" protocol schemes, they 
> > are
> >                 // required by the default operator to look up socket
> > factories.
> >                 SocketFactory sf = PlainSocketFactory.getSocketFactory();
> >                 supportedSchemes.register(new Scheme("http", sf, 80));
> >                 sf = SSLSocketFactory.getSocketFactory();
> >                 supportedSchemes.register(new Scheme("https", sf, 80));
>
> >                 // prepare parameters
> >                 HttpParams params = new BasicHttpParams();
> >                 HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
> >                 HttpProtocolParams.setContentCharset(params, "UTF-8");
> >                 HttpProtocolParams.setUseExpectContinue(params, true);
> >                 defaultParameters = params;
>
> >             } // setup
>
> >             private final static HttpParams getParams() {
> >                 return defaultParameters;
> >             }
>
> >            HttpPoster(boolean deviceSide, boolean useWifi) {
> >                this.useWifi = useWifi;
> >                this.deviceSide = deviceSide;
> >                System.err.println("HttpPoster::HttpPoster");
> >            }
>
> >            public String post(String url,
> >                                                 Hashtable<String,String> 
> > headerProperties, byte[] bytes )
> >               throws IOException {
> >                     HttpClient client = null;
> >                     HttpPost method=null;
> >                 //InputStream is = null;
> >                 //OutputStream os = null;
> >                 //String response = "";
> >                 HttpResponse rsp = null;
> >                 HttpEntity entity=null;
> >                 String fullUrl;
> >                 //int rc;
>
> >                 Log.d(TAG,"post() ---ENTER---");
> >                 Log.d(TAG,"HttpPoster::post");
> >                 Log.d(TAG,"http.proxyHost = " +
> > System.getProperty("http.proxyHost"));
> >                 Log.d(TAG,"http.proxyPort = " +
> > System.getProperty("http.proxyPort"));
> >                 try {
> >                     fullUrl = url + (deviceSide ? NETWORK_DEVICE_SIDE_TRUE :
> > NETWORK_DEVICE_SIDE_FALSE)
> >                      + (useWifi ? NETWORK_WIFI : "");
> >                     Uri fullUri = Uri.parse( fullUrl );
> >                     String targetname = fullUri.getHost();
> >                     Log.d(TAG,"HttpPoster::post -- about to open connection
> > on URL = " + fullUrl);
> >                     //
> >                     // setup proxy server
> >                     //
> >                         final HttpHost target = new HttpHost(targetname, 80,
> > "http");
> >                         final HttpHost proxy  = new 
> > HttpHost("proxy.mycompany.com",
> > 8080, "http");
>
> >                         setup() ; // Some general setup
> >                         client = new DefaultHttpClient() ;
>
> > client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
>
> >                         method = new HttpPost( fullUrl );
> >                         Log.d(TAG,"Executing request to " + target + " via 
> > " +
> > proxy);
> >                         rsp = client.execute(target, method);
> >                         entity = rsp.getEntity();
>
> >                         
> > Log.d(TAG,"---------------------------------------------");
> >                         Log.d(TAG, rsp.getStatusLine().toString() );
> >                         Header [] headers = rsp.getAllHeaders();
> >                         for (int i=0; i<headers.length; i++) {
> >                                 Log.d(TAG,"\t" + headers[i] );
> >                         }
> >                         
> > Log.d(TAG,"---------------------------------------------");
>
> >                         if (rsp.getEntity() != null) {
> >                                 Log.d(TAG, EntityUtils.toString( 
> > rsp.getEntity() ) );
> >                         }
> >                 } finally {
> >                         if (entity != null)
> >                                 entity.consumeContent(); // release 
> > connection gracefully
> >                 }
> >                 // return response;
> >                 Log.d(TAG,"post() ---EXIT---");
> >                 return new String("");
> >             }
>
> >            private final static HttpClient createHttpClient() {
>
> >                 ClientConnectionManager ccm =
> >                     new ThreadSafeClientConnManager(getParams(),
> > supportedSchemes);
> >                 //  new SingleClientConnManager(getParams(),
> > supportedSchemes);
>
> >                 DefaultHttpClient dhc =
> >                     new DefaultHttpClient(ccm, getParams());
>
> >                 return dhc;
> >             }
>
> >         }
>
> > My TestHttp application launches an Activity TestHttp::onCreate()
> > method  whose DDMS logcat output is
>
> > 08-21 14:25:54.189: DEBUG/TestHttp(238): onCreate()---enter---
> > 08-21 14:25:54.248: DEBUG/TestHttp(238): httpClient is non-null
> > 08-21 14:25:54.398: DEBUG/TestHttp(238): in catch {} response is null
> > 08-21 14:25:54.418: ERROR/TestHttp(238): Error
> > 08-21 14:25:54.418: ERROR/TestHttp(238): java.net.SocketException:
> > unknown error
> > 08-21 14:25:54.418: ERROR/TestHttp(238):     at
> > org.apache.harmony.luni.platform.OSNetworkSystem.createSocketImpl(Native
> > Method)
> > 08-21 14:25:54.418: ERROR/TestHttp(238):     at
> > org.apache.harmony.luni.platform.OSNetworkSystem.createSocket(OSNetworkSyst­em.java:
> > 79)
> > 08-21 14:25:54.418: ERROR/TestHttp(238):     at
> > org.apache.harmony.luni.net.PlainSocketImpl2.create(PlainSocketImpl2.java:
> > 59)
> > 08-21 14:25:54.418: ERROR/TestHttp(238):     at
> > java.net.Socket.checkClosedAndCreate(Socket.java:763)
> > 08-21 14:25:54.418: ERROR/TestHttp(238):     at
> > java.net.Socket.connect(Socket.java:910)
> > 08-21 14:25:54.418: ERROR/TestHttp(238):     at
> > org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFac­tory.java:
> > 117)
> > 08-21 14:25:54.418: ERROR/TestHttp(238):     at
> > org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(De­faultClientConnectionOperator.java:
> > 129)
> > 08-21 14:25:54.418: ERROR/TestHttp(238):     at
> > org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:
> > 164)
> > 08-21 14:25:54.418: ERROR/TestHttp(238):     at
> > org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConn­Adapter.java:
> > 119)
> > 08-21 14:25:54.418: ERROR/TestHttp(238):     at
>
> ...
>
> read more »- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
Announcing the new Android 0.9 SDK beta!
http://android-developers.blogspot.com/2008/08/announcing-beta-release-of-android-sdk.html
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to