В данной статье я расскажу как можно получить данные о компаниях через открытое API
сайта ru.rus.company зная ИНН компании.
Для начала добавим разрешения на использование интернет в AndrodManifest.xml.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ratnikoff.innreader">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Создадим layout для ввода ИНН:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/InnEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5" />
<Button
android:id="@+id/InnSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Поиск" />
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</ScrollView>
</LinearLayout>
Вот что у нас получилось.
И наконец сам код.
package com.ratnikoff.innreader;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button buttonSearch = (Button) findViewById(R.id.InnSearch);
buttonSearch.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.InnSearch:
ReadHttpInn readHttpInn = new ReadHttpInn();
readHttpInn.execute();
break;
}
}
public class ReadHttpInn extends AsyncTask<Void, Void, Void> {
private String urlINN = "https://ru.rus.company/%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1
%86%D0%B8%D1%8F/%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D0%B8/?%D0%B8%D0%BD%D0%BD=";
private String urlID = "https://ru.rus.company/%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F/%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D0%B8/";
String Inn;
String inputLine;
URL url;
private JSONObject jObj;
private JSONObject jObjFull;
private JSONObject jObjAdress;
@Override
protected void onPreExecute() {
EditText editText = (EditText) findViewById(R.id.InnEditText);
Inn = String.valueOf(editText.getText());
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
StringBuilder stringBuilder = new StringBuilder();
try {
// Вычитывание данных по инн
url = new URL(urlINN + Inn);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
while ((inputLine = in.readLine()) != null) {
stringBuilder.append(inputLine);
}
in.close();
String jsonString = stringBuilder.toString();
jsonString = jsonString.substring(2, jsonString.length() - 2) + "";
// Вычитывание данных по id
jObj = new JSONObject(jsonString);
stringBuilder = new StringBuilder();
url = new URL(urlID + jObj.getString("id") + "/");
in = new BufferedReader(new InputStreamReader(url.openStream()));
while ((inputLine = in.readLine()) != null) {
stringBuilder.append(inputLine);
}
in.close();
jsonString = stringBuilder.toString();
jObjFull = new JSONObject(jsonString);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
TextView textView = (TextView) findViewById(R.id.text);
String temp = null;
try {
temp = jObj.getString("shortName");
} catch (JSONException e) {
e.printStackTrace();
}
textView.append("Наименование организации:" + temp + "\n");
try {
temp = jObjFull.getJSONObject("address").getString("fullHouseAddress");
} catch (JSONException e) {
e.printStackTrace();
}
textView.append("Адрес организации:" + temp + "\n");
super.onPostExecute(aVoid);
}
}
}
В резульате мы получаем следующие данные.
C Уважение Ратников С.И.
Комментариев нет:
Отправить комментарий