Подтвердить что ты не робот

Получение информации о продуктах, таких как имя, цена и т.д. С использованием номера штрих-кода

Я разрабатываю приложение, которое использует штрих-код для получения информации о продуктах элементов после сканирования штрих-кода.

Я не хочу, чтобы пользователь устанавливал приложение штрих-кода ZXing отдельно, поэтому я ввел код ZXing в свой проект. Таким образом, я смог получить идентификационный номер штрих-кода.

Я хочу получить информацию о продукте, такую ​​как имя, производитель, цена и т.д., используя номер штрих-кода, используя 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.

Это 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

Пожалуйста, помогите мне найти причину, по которой я получаю ошибку.

4b9b3361

Ответ 1

Попробуйте добавить свой идентификатор API к URL-адресу. https://developers.google.com/shopping-search/v1/getting_started#getting-started

Я попробовал это и смог получить информацию о хронографе Майкла Корса MK5412 на основе URL вашего кода.

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

Вы хотите использовать API и выполнить поиск GTIN, что представляет собой число, закодированное в штриховом коде.

Ответ 3

Существуют также другие базы данных штрих-кодов, такие как ean-search.org.

Ответ 4

Я думаю, "номер штрих-кода, используемый для обозначения конкретного продукта, а номер штрих-кода уникален для всего мира. Самый лучший штрих-код apis находит данный номер штрих-кода из своей собственной базы данных, чтобы получить эту конкретную информацию о продукте (если данный штрих-код число существует в их базе данных), иначе это не даст никакого результата.

01. Сначала вы должны создать свою собственную базу данных, включая номера штрих-кодов для каждого элемента в вашей базе данных (существует так много типов штрих-кодов, которые вы можете использовать)

02.если вы вводите новый продукт, вы должны получить или купить действительный номер штрих-кода для вашего нового продукта (убедитесь, что ваш номер уникален для всего мира).--

**, то вы можете использовать свою базу данных для поиска информации о позиции для заданного штрих-кода **