我正在开发一种使用条形码扫描条形码后获得产品信息的应用程序.

我不想让用户分别安装ZXing条码应用程序,所以我将ZXing代码嵌入到我的项目中.所以我能够获得条形码ID号码.

我想使用谷歌搜索api购物的条形码,得到名称,制造商,价格等产品信息.

这是我使用的代码

public class JSONExampleActivity extends Activity {

TextView httpStuff;

DefaultHttpClient client;

JSONObject json;

final static String URL = "https://www.googleapis.com/shopping/search";

String upc = "/v1/public/products?country=US&q=691464717759&restrictBy=gtin=691464717759";

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

httpStuff = (TextView) findViewById(R.id.tvHttp);

client = new DefaultHttpClient();

new Read().execute("items");

}

public JSONObject products(String upc) throws ClientProtocolException, IOException, JSONException {

StringBuilder url = new StringBuilder(URL);

url.append(upc);

HttpGet get = new HttpGet(url.toString());

HttpResponse r = client.execute(get);

int status = r.getStatusLine().getStatusCode();

if (status == 200) {

HttpEntity e = r.getEntity();

String data = EntityUtils.toString(e);

JSONObject timeline = new JSONObject(data);

return timeline; }

else {

Toast.makeText(JSONExampleActivity.this, "error", Toast.LENGTH_SHORT);

return null; }

}

public class Read extends AsyncTask {

@Override

protected String doInBackground(String... params) {

// TODO Auto-generated method stub

try {

json = products(upc);

return json.getString(params[0]);

} 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();

}

return null;

}

@Override

protected void onPostExecute(String result){

httpStuff.setText(result); }

}

}

但是我没有在httpStuff中收到任何文本.

这是logcat:

D/SntpClient(61): request time failed: java.net.SocketException: Address family not supported by protocol

W/System.err(793): org.apache.http.conn.ConnectTimeoutException: Connect to /209.85.175.95:443 timed out

W/System.err(793): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)

W/System.err(793): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:143)

W/System.err(793): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)

W/System.err(793): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)

W/System.err(793): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359)

W/System.err(793): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)

W/System.err(793): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)

W/System.err(793): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)

W/System.err(793): at com.android.example.jsonexample.JSONExampleActivity.products(JSONExampleActivity.java:53)

W/System.err(793): at com.android.example.jsonexample.JSONExampleActivity$Read.doInBackground(JSONExampleActivity.java:77)

W/System.err(793): at com.android.example.jsonexample.JSONExampleActivity$Read.doInBackground(JSONExampleActivity.java:1)

W/System.err(793): at android.os.AsyncTask$2.call(AsyncTask.java:185)

W/System.err(793): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)

W/System.err(793): at java.util.concurrent.FutureTask.run(FutureTask.java:138)

W/System.err(793): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)

W/System.err(793): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)

W/System.err(793): at java.lang.Thread.run(Thread.java:1019)

D/SntpClient(61): request time failed: java.net.SocketException: Address family not supported by protocol

请帮我找出我收到错误的原因.

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐