Wednesday 19 September 2012

xcap communicate with server?

xml creation for xcap resource:


private String resourceXml() {
XmlSerializer serializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
try {
serializer.setOutput(writer);
serializer.startDocument("UTF-8", null);
serializer.startTag("", "resource-lists");
serializer.attribute("", "xmlns",
"urn:ietf:params:xml:ns:resource-lists");

serializer.startTag("", "list");
serializer.attribute("", "name", "friends");

serializer.endTag("", "list");

serializer.endTag("", "resource-lists");
serializer.endDocument();

return writer.toString();

} catch (Exception e) {
throw new RuntimeException(e);
}
}

next xml call to the server:


protected void PutResourceFunction() {

HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC);
HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
//HttpClient client = new DefaultHttpClient(httpParams);
HttpClient http = _getNewHttpClient();
HttpPut request = new HttpPut(put_url);
request.setHeader("Content-Type", "application/xml");

String file = resourceXml();
Log.i(TAG, "Resource:" + file);

StringEntity se = null;
try {
se = new StringEntity(file);
} catch (UnsupportedEncodingException e1) {

e1.printStackTrace();
}

se.setContentEncoding("UTF-8");
se.setContentType("application/xml");
request.setEntity(se);
HttpResponse response = null;
try {
response = http.execute(request);
} catch (ClientProtocolException e1) {

e1.printStackTrace();
} catch (IOException e1) {

e1.printStackTrace();
}

HttpEntity entity = response.getEntity();
InputStream is = null;
try {
is = entity.getContent();
} catch (IllegalStateException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}
String _response = convertStreamToString(is);

Log.i(TAG, "put-res-" + _response);
// Check if server response is valid code
int res_code = response.getStatusLine().getStatusCode();
Log.i(TAG, "status code" + res_code);
try {
is.close();
} catch (IOException e) {

e.printStackTrace();
}

}
here _getNewHttpClient(); is




public static HttpClient _getNewHttpClient() {
try {
KeyStore trustStore = KeyStore.getInstance(KeyStore
.getDefaultType());
trustStore.load(null, null);

SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory
.getSocketFactory(), 80));
registry.register(new Scheme("https", sf, 443));

ClientConnectionManager ccm = new ThreadSafeClientConnManager(
params, registry);

DefaultHttpClient http = new DefaultHttpClient(ccm, params);
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(loginid, loginid);
AuthScope authScope = new AuthScope(AuthScope.ANY_HOST,
AuthScope.ANY_PORT);
http.getCredentialsProvider()
.setCredentials(authScope, credentials);

return http;
} catch (Exception e) {
return new DefaultHttpClient();
}
}



Wednesday 4 April 2012

Checking for Internet availability in Android.


public Boolean isNetAvailable(Context con)  {

        try{
            ConnectivityManager connectivityManager = (ConnectivityManager)      
                                                                      con.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo wifiInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            NetworkInfo mobileInfo =
                                 connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            if (wifiInfo.isConnected() || mobileInfo.isConnected()) {
                return true;
            }
        }
        catch(Exception e){
           e.printStackTrace();
        }
        return false;
    }
   
    and also add these permissions in manifest.xml

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>