Ministerul Educației al Republicii Moldova
Universitatea Tehnică a Moldovei
Facultatea Calculatoare, Informatică și Microelectronică
Departamentul Inginerie Software și Automatica
Desciplina: Proiectarea Aplicațiilor Mobile
Raport
Lucrare de laborator Nr.3
Tema: Simple HTTP Client (Web Service Emulation)
A verificat: asistent univ.
Ciudin S.
A efectuat: Studentul gr. TI-151
Poseletchi Cristi
Chișinău 2017
Scopul lucrării de laborator
De realizat emularea programatica a unui serviciu web. De realizat o aplicație ce va încărca de pe o resursă
web (preferată, ex: [Link] ) fluxul RSS al acesteia.
Condiții:
Serviciul web va fi emulat programatic utilizând metodele protocolului HTTP (GET; )
a) posibilitate de adaugare 2 sau mai multe fluxuri RSS
b) posibilitate de a naviga catre postarea din fluxul incarcat
c) salvarea locala a fluxului cu păstrarea sa pînă utilizatorul nu o va distruge
Aplicația creată
Figura 1 – Interfața aplicației
În figura 1 este reprezentata aplicația in timp ce rulează, putem observa fluxurile de știri, la accesarea
cărăia ne redirecționează pe pagina web.
Concluzie
La realizarea acestei lucrări de laborator a fost creat o aplicatie care citeste fluxul RSS al unui sait. Pentru
acesta am folosit metoda get destinatia cărăia este pentru a cere serverului o resursă. De asemenea am folosit si
Synchronous Task, si anumele metodele ei onPreExecute, doIn Background și on Postexecute.
Bibliografie
1. Extragerea pozelor din gif. [Resursă electronică] Regim de acces: [Link]
2. Transformarea pozelor în vector . [Resursă electronică] Regim de acces: [Link]
3. [Link]
apache-httpclient
4. [Link]
5. [Link]
Anexa A
MainActivity
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class MainActivity extends AppCompatActivity {
Toolbar toolbar;
RecyclerView recyclerView;
RSSObject rssObject;
//RSS link
private final String RSS_link="[Link]
private final String RSS_to_Json_API =
"[Link]
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);
toolbar = (Toolbar)findViewById([Link]);
[Link]("Nou");
setSupportActionBar(toolbar);
recyclerView = (RecyclerView)findViewById([Link]);
LinearLayoutManager linearLayoutManager = new
LinearLayoutManager(getBaseContext(),[Link],false);
[Link](linearLayoutManager);
loadRSS();
}
private void loadRSS() {
AsyncTask<String,String,String> loadRSSAsync = new AsyncTask<String, String,
String>() {
ProgressDialog mDialog = new ProgressDialog([Link]);
@Override
protected void onPreExecute() {
[Link]("Asteptati...");
[Link]();
}
@Override
protected String doInBackground(String... params) {
String result;
HTTPDataHandler http = new HTTPDataHandler();
result = [Link](params[0]);
return result;
}
@Override
protected void onPostExecute(String s) {
[Link]();
rssObject = new Gson().fromJson(s,[Link]);
FeedAdapter adapter = new FeedAdapter(rssObject,getBaseContext());
[Link](adapter);
[Link]();
}
};
StringBuilder url_get_data = new StringBuilder(RSS_to_Json_API);
url_get_data.append(RSS_link);
[Link](url_get_data.toString());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate([Link].main_menu,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if([Link]() == [Link].menu_refresh)
loadRSS();
return true;
}
}
Anexa B
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="[Link]
xmlns:app="[Link]
xmlns:tools="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="[Link]">
<[Link]
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:titleTextColor="@android:color/white"/>
<[Link]
android:padding="8dp"
android:id="@+id/recyclerView"
android:layout_below="@id/toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
Anexa C
lass HTTPDataHandler
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
/**
* Created by reale on 5/5/2017.
*/
public class HTTPDataHandler {
static String stream = null;
public HTTPDataHandler() {
}
public String GetHTTPData(String urlString)
{
try{
URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection)[Link]();
if([Link]() == HttpURLConnection.HTTP_OK)
{
InputStream in = new
BufferedInputStream([Link]());
BufferedReader r = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String line;
while((line = [Link]()) != null)
[Link](line);
stream = [Link]();
[Link]();
}
} catch (MalformedURLException e) {
[Link]();
} catch (IOException e) {
[Link]();
}
return stream;
}
}