2013-02-08 105 views
0

我正试图在android应用程序中实现http://codify.freebaseapps.com/?request=https%3A%2F%2Fwww.googleapis.com%2Ffreebase%2Fv1%2Fsearch%3Fquery%3DBlue%2BBottle&title=Simple%20Search。我安装了正确的API密钥并与google api服务相匹配,并在Referenced Libraries下导入了相应的jar文件。无法在Android应用程序中找到com.google.api.client.htpp.javanet.NetHttpTransport在Android应用程序中

但是,我的代码一直在抛出一个找不到类 - 每次在模拟器上运行时出现'com.google.api.client.http.javanet.NetHttpTransport'错误。任何建议或反馈?

回答

0

您必须将库添加到项目中。

  1. 右击项目
  2. 属性
  3. Java构建路径
  4. 添加外部JAR

请阅读这篇文章:Android and Google client API NetHttptransport Class not found

+0

我已经按照上述过程将相关的jar添加到引用库部分。我仍然遇到找不到 - ''com.google.api.client.http.javanet.NetHttpTransport' – laser21 2013-02-08 16:16:32

+0

如果你去Package Explorer中的Android Dependencies并展开它来显示你的google-http-client jar文件已添加您应该可以再次展开以查看com.google.api.client.http.javanet包。如果你能看到,那么你应该有权访问NetHttpTransport。 – 2013-02-08 18:41:37

0

当我建你链接的编纂程序因为我没有对Android进行测试,因此在Android中可能会有更简单的方法。

下面是使用Android SDK中包含的Apache HttpClient和json.org完成此操作的另一种方法。

import java.io.IOException; 
import java.io.InputStream; 
import java.net.URLEncoder; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.protocol.BasicHttpContext; 
import org.apache.http.protocol.HttpContext; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.os.AsyncTask; 

public class FreebaseSearchTask extends AsyncTask<String, Void, JSONObject> { 

    protected JSONObject getJsonContentFromEntity(HttpEntity entity) 
      throws IllegalStateException, IOException, JSONException { 
     InputStream in = entity.getContent(); 
     StringBuffer out = new StringBuffer(); 
     int n = 1; 
     while (n > 0) { 
      byte[] b = new byte[4096]; 
      n = in.read(b); 
      if (n > 0) 
       out.append(new String(b, 0, n)); 
     } 
     JSONObject jObject = new JSONObject(out.toString()); 
     return jObject; 
    } 

    @Override 
    protected JSONObject doInBackground(String... params) { 
     HttpClient httpClient = new DefaultHttpClient(); 
     HttpContext localContext = new BasicHttpContext(); 
     String query = params[0];  
     JSONObject result = null; 
     try { 
      HttpGet httpGet = new HttpGet("https://www.googleapis.com/freebase/v1/search?query=" + URLEncoder.encode(query, "utf-8")); 

      HttpResponse response = httpClient.execute(httpGet, localContext); 
      HttpEntity entity = response.getEntity(); 
      result = getJsonContentFromEntity(entity); 
     } catch (Exception e) { 
      Log.e("error", e.getLocalizedMessage()); 
     } 
     return result; 
    } 

    protected void onPostExecute(JSONObject result) { 
     doSomething(result); 
    } 
} 
相关问题