【问题标题】:Getting Product information like name, price etc using barcode number使用条形码编号获取产品信息,如名称、价格等
【发布时间】:2012-04-20 01:51:01
【问题描述】:

我正在开发一个应用程序,它使用barcode 在扫描barcode 后获取商品的产品信息。

我不希望用户单独安装ZXing barcode 应用程序,因此我将ZXing 代码嵌入到我的项目中。所以我能够获得barcode ID number

我想通过 google search 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<String, Integer, String> {      
        @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 中没有收到任何文本。

这是日志猫:

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

请帮我找出错误的原因。

【问题讨论】:

  • 您对此有什么解决方案吗?我必须在我的应用程序中为我们的一位客户实现相同的功能。你能把解决办法发给我吗?

标签: java android barcode


【解决方案1】:

尝试将您的 API id 添加到 url。 https://developers.google.com/shopping-search/v1/getting_started#getting-started

我试了一下,可以根据你代码的url获取Michael Kors MK5412 Chronograph Watches的信息。

https://www.googleapis.com/shopping/search/v1/public/products?country=US&q=691464717759&restrictBy=gtin=691464717759&key={你的钥匙在这里}

因此,您必须修复您的 url 构建器以匹配 ^。

还要确保你放了

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

在您的清单中。感谢这个人:http://androidforums.com/developer-101/100793-java-net-unknownhostexception.html

编码愉快:)

【讨论】:

    【解决方案2】:

    您想使用the API 并通过条形码中编码的数字所代表的GTIN 进行搜索。

    【讨论】:

    • 嗨,我已经使用了谷歌“search api for shopping”和 GTIN,因为你已经指定并更新了我的帖子。请检查代码。我无法获得字符串结果。我已经发布了 logcat
    【解决方案3】:

    还有其他条码数据库,比如ean-search.org

    【讨论】:

      【解决方案4】:

      我认为,“用于表示特定产品的条形码编号,并且条形码编号对于全世界都是唯一的。大多数条形码 api 从他们自己的数据库中查找给定的条形码编号以获取特定的产品信息(如果给定的条形码number 存在于他们的数据库中)否则它不会给出任何结果。”

      01.首先您应该创建自己的数据库,包括数据库中每个项目的条形码编号。(您可以使用的条形码类型很多)

      02.如果您介绍一种新产品,您应该为您的新产品获取或购买一个有效的条形码编号(确保您的编号在全世界都是唯一的)。--

      ** 那么您可以使用您的数据库查找给定条形码的项目信息 **

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-25
        • 2014-05-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多