2012-01-10 7 views
2

接続(または、することはできません少なくとも私はそうだと思う)。私はバックエンドに精通していないので、私が致命的なルーキーの間違いをしているなら、私を許してください。 28:50.377:これはlogcat :私は、私が開発していアンドロイドアプリでmongolabs RESTインタフェースを介してのMongoDBに接続しようとしていますが、それが接続されていない、代わりにそれが例外をスローして

01-10 16

あるSystem.errの/ W(630):javax.net.ssl.SSLException:証明書内のホスト名が一致しませんでした:!= OR OR> 01 -10-10:16:28:50.388:W/System.err(630):org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:185)01-10> 16:28:50.388:W/System.errの(630):org.apache.http.conn.ssl.BrowserCompatHostnameVerifier.verify(BrowserCompatHostnameVerifier.java:54)で

以下

は私がデータベースにアクセスしてアイテムを取得するために書いたMongoLabHelperクラスの一部であります

HttpClient client; 
JSONObject db; 

MongoLabHelper() throws ClientProtocolException, IOException, JSONException{ 
    client = new DefaultHttpClient(); 
    HttpGet request = new HttpGet("https://api.mongolab.com/api/1/databases/breadcrumbs/collections/crumbs?apiKey=xxxxxxxxxxxxx"); 
    HttpResponse response = client.execute(request); 
    HttpEntity entity = response.getEntity(); 
    InputStream in = entity.getContent(); 
    String json = in.toString(); 
    db = new JSONObject(json); 
} 

public String getName(String name) throws JSONException { 
    JSONObject doc = db.getJSONObject(name); 
    return doc.getString("name");    
} 

とここの部分は、あなたが実際に明示的に設定SSLを処理するためにHttpClientをする必要があり、それが

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    String name = "Crumb Not Available"; 

    MongoLabHelper help; 
    try { 
     help = new MongoLabHelper(); 
     name = help.getName("Chipotle"); 
    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 




    setContentView(R.layout.breadcrumb); 
    TextView crumbName = (TextView) findViewById(R.id.crumb_name); 
    crumbName.setText(name); 

答えて

3

で使用されるクラスです。私は、このstackoverflowのスレッドが必要な情報を持っていると信じて:

Secure HTTP Post in Android

私は便宜上スレッドから、コードの該当ビットをコピーします:ヘルパーとして

private HttpClient createHttpClient() 
{ 
    HttpParams params = new BasicHttpParams(); 
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
    HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET); 
    HttpProtocolParams.setUseExpectContinue(params, true); 

    SchemeRegistry schReg = new SchemeRegistry(); 
    schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 
    schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); 
    ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg); 

    return new DefaultHttpClient(conMgr, params); 
} 
0

を。
私はMongoLabコミュニケーションを抽象化するためにAndroidライブラリを実装しました。
主な目標は、Androidアプリケーションから直接クラウド内のMongoの力を活用するライブラリを使いやすくすることです。
注:MongoLabを使用するカスタムACRAレポーターも含まれています。あなたがアプリケーションhttp://lolapriego.com/blog/?p=16

か、この要旨を見てみることができますから、ここでは例を持っている>https://github.com/wareninja/mongolab-sdk

0

から
:ここ

は、最初のバージョン (私は拡張しておこう)ですあなたは、Android

public class CustomHttpClient { 
/** The time it takes for our client to timeout */ 
public static final int HTTP_TIMEOUT = 30 * 1000; // milliseconds 

/** Single instance of our HttpClient */ 
private static HttpClient mHttpClient; 

/** 
* Get our single instance of our HttpClient object. 
* 
* @return an HttpClient object with connection parameters set 
*/ 
private static HttpClient getHttpClient() { 
    if (mHttpClient == null) { 
     mHttpClient = new DefaultHttpClient(); 
     final HttpParams params = mHttpClient.getParams(); 
     HttpConnectionParams.setConnectionTimeout(params, HTTP_TIMEOUT); 
     HttpConnectionParams.setSoTimeout(params, HTTP_TIMEOUT); 
     ConnManagerParams.setTimeout(params, HTTP_TIMEOUT); 
    } 
    return mHttpClient; 
} 

/** 
* Performs an HTTP Post request to the specified url with the 
* specified parameters. 
* 
* @param url The web address to post the request to 
* @param postParameters The parameters to send via the request 
* @return The result of the request 
* @throws Exception 
*/ 
public static String executeHttpPost(String url, JSONObject json) throws Exception { 
    BufferedReader in = null; 
    try { 
     HttpClient client = getHttpClient(); 
     HttpPost request = new HttpPost(url); 
     request.setEntity(new ByteArrayEntity(json.toString().getBytes("UTF-8"))); 
     request.setHeader("Content-Type", "application/json"); 

     HttpResponse response = client.execute(request); 
     in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

     StringBuffer sb = new StringBuffer(""); 
     String line = ""; 
     String NL = System.getProperty("line.separator"); 
     while ((line = in.readLine()) != null) { 
      sb.append(line + NL); 
     } 
     in.close(); 

     String result = sb.toString(); 
     return result; 
    } finally { 
     if (in != null) { 
      try { 
       in.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

/** 
* Performs an HTTP GET request to the specified url. 
* 
* @param url The web address to post the request to 
* @return The result of the request 
* @throws Exception 
*/ 
public static String executeHttpGet(String url) throws Exception { 
    BufferedReader in = null; 
    String data = null; 

    try { 
     HttpClient client = getHttpClient(); 
     HttpGet request = new HttpGet(); 
     request.setURI(new URI(url)); 
     HttpResponse response = client.execute(request); 
     response.getStatusLine().getStatusCode(); 

     in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
     StringBuffer sb = new StringBuffer(""); 
     String l = ""; 
     String nl = System.getProperty("line.separator"); 
     while ((l = in.readLine()) !=null){ 
      sb.append(l + nl); 
     } 
     in.close(); 
     data = sb.toString(); 
     return data;   
    } finally{ 
     if (in != null){ 
      try{ 
       in.close(); 
       return data; 
      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

/** 
* Performs an HTTP DELETE request to the specified url. 
* 
* @param url The web address to post the request to 
* @return The result of the request 
* @throws Exception 
*/ 
public static String executeHttpDelete(String url) throws Exception { 
    BufferedReader in = null; 
    String data = null; 

    try { 
     HttpClient client = getHttpClient(); 
     HttpDelete request = new HttpDelete(); 
     request.setURI(new URI(url)); 
     HttpResponse response = client.execute(request); 
     response.getStatusLine().getStatusCode(); 

     in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
     StringBuffer sb = new StringBuffer(""); 
     String l = ""; 
     String nl = System.getProperty("line.separator"); 
     while ((l = in.readLine()) !=null){ 
      sb.append(l + nl); 
     } 
     in.close(); 
     data = sb.toString(); 
     return data;   
    } finally{ 
     if (in != null){ 
      try{ 
       in.close(); 
       return data; 
      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

/** 
* Performs an HTTP Put request to the specified url with the 
* specified parameters. 
* 
* @param url The web address to post the request to 
* @param putParameters The parameters to send via the request 
* @return The result of the request 
* @throws Exception 
*/ 
public static String executeHttpPut(String url, JSONObject json) throws Exception { 
    BufferedReader in = null; 
    try { 
     HttpClient client = getHttpClient(); 
     HttpPut request = new HttpPut(url); 

     request.setEntity(new ByteArrayEntity(json.toString().getBytes("UTF-8"))); 
     request.setHeader("Content-Type", "application/json"); 
     HttpResponse response = client.execute(request); 
     in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

     StringBuffer sb = new StringBuffer(""); 
     String line = ""; 
     String NL = System.getProperty("line.separator"); 
     while ((line = in.readLine()) != null) { 
      sb.append(line + NL); 
     } 
     in.close(); 

     String result = sb.toString(); 
     return result; 
    } finally { 
     if (in != null) { 
      try { 
       in.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

}

にHTTPリクエストを作成する方法を見ることができる場所
関連する問題