I have a MySQL database with one unique table: geopoints, that has 3 columns: id, lat and long, and this table is filled up with 4 entrys already, 4 values of lat and long (1E6 because its to use on a mapview).
My objective is to mark on a mapview all these 4 geopoints dynamicly using a php script that generates json array, and with a httpPost etc...
This is the code I have so far:
getjson = (Button) findViewById(R.id.button1);
getjson.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
JSONArray jArray;
String result = null;
InputStream is = null;
StringBuilder sb = null;
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();//Whats this for?
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(
"http://????????.com/????/getGeopoints.php");
HttpResponse response = httpclient.execute(httpPost);
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error connecting to http " + e.toString());
}
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(is, "iso-8859-1"), 8);
sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting " + e.toString());
}
try {
jArray = new JSONArray(result);
for (int i = 0; i <= jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
Log.i("log_tag", "id: " + json_data.getInt("id")
+ ", latitude: " + json_data.getInt("lat")
+ ", longitude: " + json_data.getInt("long"));
}
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
}
});
This is the php file:
<?php
mysql_connect("?????.com", "username", "password");
mysql_select_db("database_name");
$q = mysql_query("SELECT * FROM geopoints");
while ($e = mysql_fetch_assoc($q))
$output[] = $e;
print(json_encode($output));
mysql_close();
?>
I have this file running right because as I enter the url on a browser it generates the exact json array with the exact information I want.
There is only think I don't understand, what's HttpEntity for? Because I followed up a tutorial, and in there it uses an array with information to filter from the db, as I don't want to filter any info (I want all the database table entrys, not just one or two) I just leaved it blank.
What's wrong with my code?
The error I get in logcat is all the catch messages "11-29 12:47:29.662: E/log_tag(898): Error connecting to http Http android.os.NetworkOnMainThreadException".
android.os.NetworkOnMainThreadException
android >= 3.0 does not allow Network request on main UI thread. you need to use AsyncTask to call network request.
That's because you're are blocking the main UI thread. Try to use AsyncTasks for Http requests.
Related
I am new to using PHP and Java. I am making a Android app and I got an SQL syntax error...
The Error:
returned to Java:
check the manual that corresponds to your MySQL server
version for the right syntax to use near '#mail.com' at line 1. Any idea how I have to fix that.
I think that a problem of php script. How can I fix this. Any help is greatly appreciated
// Login by email and password if access success setId()
// Saved Email as static string "staticEmail" and used to get CustomerID from customer table
// Get & set CustomerID to "string qr_id" if email=".$email
/* error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server
version for the right syntax to use near '#mail.com' at line 1
*/
<?php
//connect to MySQL database
mysql_connect("localhost","name","pass") or die(mysql_error());
mysql_select_db("tls_db");
$output = array();
if (isset($_GET['email'])){
$email = $_GET['email'];
$sql = mysql_query("select CustomerID from customer where email=".$email) or die(mysql_error());
while($row=mysql_fetch_assoc($sql)){
$output[] = $row;
}
mysql_close();
print(json_encode($output));
}
?>
Java:
private void setId() {
InputStream is = null;
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(
"http://"+URL+"/tls_db/log.php?email=" + staticEmail); //Post email 123#mail.com
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection" + e.toString());
}
// Convert response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = "";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
result = sb.toString();
is.close();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
try {
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
// Get CustomerId and set to (static string qr_id)
qr_id = json_data.getString("CustomerID");
}
} catch (JSONException e1) {
//iv.setVisibility(View.GONE);
Toast.makeText(getBaseContext(), "Server Data Error",
Toast.LENGTH_LONG).show();
} catch (ParseException e1) {
e1.printStackTrace();
}
// Open class QRcode
Intent iSuccess = new Intent(Login.this, QRcode.class);
startActivity(iSuccess);
}
You need to quote your $email in SQL query:
$sql = mysql_query("select CustomerID from customer where email='".$email."'") or die(mysql_error());
Btw, your code is vulnerable to SQL Injections. Make sure to read how to protect from this vector of attack.
What i am doing:
I am trying to make a reverse geocoding in android
I am getting error as::
java.lang.IllegalArgumentException: Illegal character in query at index 59: http://maps.google.com/maps/api/geocode/json?address=Agram, Bengaluru, Karnataka, India&sensor=false
NOte: that request gets a json response in browser but not from my class below
This line is giving this error::
HttpGet httpget = new HttpGet(url);
JSONfunctions.java
public class JSONfunctions {
public static JSONObject getJSONfromURL(String url) {
InputStream is = null;
String result = "";
JSONObject jArray = null;
// Download JSON data from URL
try {
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
}
// Convert response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
try {
jArray = new JSONObject(result);
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
return jArray;
}
}
Use URLEncoder.encode() to encode the value of your address parameter "Agram, Bengaluru, Karnataka, India" before putting it in the URL string so that it becomes something like
http://maps.google.com/maps/api/geocode/json?address=Agram,+Bengaluru,+Karnataka,+India&sensor=false
i.e. spaces changed to + and other special octets represented as %xx.
Browsers do smart URL encoding for strings entered in the address bar automatically so that's why it works there.
Build your url like,
final StringBuilder request = new StringBuilder(
"http://maps.googleapis.com/maps/api/geocode/json?sensor=false");
request.append("&language=").append(Locale.getDefault().getLanguage());
request.append("&address=").append(
URLEncoder.encode(locationName, "UTF-8"));
I am using httpclient 4.3.3
String messagestr = "Welcome to Moqui World";
String url="http://my.example.com/api/sendhttp.phpauthkey="+URLEncoder.encode("17djssnvndkfjb110d3","UTF-8")+"&mobiles=91"+URLEncoder.encode(contactNumber,"UTF-8")+"&message="+URLEncoder.encode(messagestr,"UTF8")+"&sender="+URLEncoder.encode("WMOQUI","UTF-8")+"&route=4";
HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);
It's working fine for me. I hope this may help you.
I'm using a MySQL database and php for my java/android app.
I haven't got any experience with php.
this is my php file (getAllDataFromSomeTable.php)
<?php
mysql_connect("someHosturl","someUsername","somePassword");
mysql_select_db("databasename");
$q=mysql_query("SELECT * FROM sometable");
while($e=mysql_fetch_assoc($q))
$output[]= $e;
print(json_encode($output));
mysql_close();
?>
and i work with HttpPosts and stuff like that in Java.
This way i can get all the data from 'sometable'
but if i want to use a different query like "select top 1 from sometable where username = 'thisuser'" for example. How can i change that dynamically in java?
How should my php file look and how should the code in java look?
this is the code i have now:
String result = "";
List<? extends NameValuePair> licenses = (List<? extends NameValuePair>) new ArrayList<DriversLicense>();
InputStream is = null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://some-url.com/getAllDataFromSomeTable.php");
httpPost.setEntity(new UrlEncodedFormEntity(licenses));
HttpResponse response = httpclient.execute(httpPost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.d("httpclient tag", e.getMessage());
}
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
Log.d("result is", result);
}catch(Exception e){
Log.d("log-tag", "Error converting result "+e.toString());
}
try{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
Log.d("from jsonObject", "id= " + json_data.getInt("Id") + ", number = "
+json_data.getString("Number"));
}
}catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
Why don't you try adding parametes to the request?
For example:
http://some-url.com/getAllDataFromSomeTable.php?table=difftable&whereField.1=username&whereValue.1=xyz&whereField.2=surname&whereValue.2=Smith
This way you would need to parse these parameters and build a query based on the passed data.
I'm thinking that the above request would make this query:
select * from difftable where username = 'xyz' and surname ='Smith'
On the other hand, this is what webservices are for, so i would think about something like that, if possible.
I have a problem with my first Android App. I want to ask a PHP server for a name and image, using an cardid. This works well, but JSONArray throws an exception when I try to split up the long string I get. This is the method I use on the Android device:
public static Object[] getIdCardOwner(String card)
{
JSONArray jArray;
String result = null;
InputStream is = null;
StringBuilder sb=null;
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("cardid",card));
Object returnValue[] = new Object[2];
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(SERVER_URL);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection"+e.toString());
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"), 16);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line="0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
//paring data
try{
jArray = new JSONArray(result);
JSONObject json_data=null;
for(int i=0;i<jArray.length();i++){
json_data = jArray.getJSONObject(i);
returnValue[0] = json_data.getString("name");
returnValue[1] = json_data.getString("image");
}
}
catch(JSONException e1){
Log.e("log_tag", "Error converting result "+e1.toString());
} catch (ParseException e1) {
e1.printStackTrace();
}
return returnValue;
}
This is the String result I get before the exception happens:
{"0":"4016612622","card":"4016612622","1":"Peter Poulsen","name":"Peter Poulsen","2":"\/9j\/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP\/sABFEdWNreQABAAQAAAAeAAD\/4QMpaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI\/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGQ0E3OUQyRDlDQkYxMUUxODMyQThCQTQ0RjhFMDFBRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGQ0E3OUQyRTlDQkYxMUUxODMyQThCQTQ0RjhFMDFBRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDQTc5RDJCOUNCRjExRTE4MzJBOEJBNDRGOEUwMUFGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZDQTc5RDJDOUNCRjExRTE4MzJBOEJBNDRGOEUwMUFGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+\/+4ADkFkb2JlAGTAAAAAAf\/bAIQAEAsLCwwLEAwMEBcPDQ8XGxQQEBQbHxcXFxcXHx4XGhoaGhceHiMlJyUjHi8vMzMvL0BAQEBAQEBAQEBAQEBAQAERDw8RExEVEhIVFBEUERQaFBYWFBomGhocGhomMCMeHh4eIzArLicnJy4rNTUwMDU1QEA\/QEBAQEBAQEBAQEBA\/8AAEQgAlgBkAwEiAAIRAQMRAf\/EAHwAAAIDAQEAAAAAAAAAAAAAAAADAgQFAQYBAAMBAQAAAAAAAAAAAAAAAAABAgMEEAABBAEDAwMCBQQDAAAAAAABABECAyExEgRBUSJhEwVxMoGRobEV0UJScjMUJBEAAgICAgMBAQAAAAAAAAAAAAERAiExUQNBEhNxIv\/aAAwDAQACEQMRAD8Are5PONNV02zAf0f80obuwyie4QOBouY6R2+z9WOnVG+xz5DAfUJUpbA85RiPVZ9\/zEIPGsbj3ZgmlOgcI1hKZI8hn1XPckI7jL8HWBL5flzDBo+oSv5DlGJiZu6fqyfZHoeQXhIO4D\/sq1Q8R9Fmcb5Ocd0LySJdexZlpceyFkAYl8IiBzI5kMususkBFkMpMuMgDjIXUIAo\/H86cyKrsy6S\/qrXL5EKaiZddFU4nx9ldgstkABnaMlR5ELudyvYjiNZyegTcSCmCjfybeVY8n9IjQIHEIHk69Hw\/jePTEARc9ZHUq2eDQS5iCl78Gi6eTyUeFyLMVwO1T\/jOXEOYEhevjTCIaIAC4ax2S+jK+KPFWVSjicTEjuuVX28ee+st6L1vI4lNoInEFYXP+KlU86vKHbqFVbp4Znbqayi1xOfVyIf4zH3RVj3Y9l5gTnVMSjghb1N0rqo2Bsj1TaghOSx7o7LnvYcR7fqlefouREtoyPyUjHe6f8AH0QlbT3H5IQB3kcmMKt0fInAHqVZ4FArg8vvnmZ9Vm1Vmd1cZaDyP4LYqwym3Bt1ryXI7QEwMyRBymgsFBskSdkDaoguukeiQ4FzAVW2DgqzPslTGE5E0ea+T4grPuwHjL7gOhUPirjGw0k4kHi\/cLa5NUZwlAjBC88AaOVEtiMltVyoOXsrFkzcXI\/aFIaKMftCkQeiF1CAOxA9\/A0AV2vRUazOVshHXQlTnPlVhxFx6JNZNqOEacJsR2TwayH6rGr50jibBWqr9+I5UtGqcmgJ1R6uuGyJPZUZ2yhmWFSt5Mplokv6JQNuDWnZEpM7IOzqjx6pyL2W7R2fKtTjREARk57oZMyJvLOO4WHy4R9wyGvVa18mPiXHVZPP+8SHUZV02Y9ujR45MqYE9lKP2D6KPH\/4If6hSj9o+iZB3CEIQAm680TJGkmSp\/I3jEQRE9Yh\/wBFYNPvHoW6FSjC+J8YxHqjHBolZrDgpyjypxE5jEvTP6LR+MhZVb5l3Gi7GuZ87ZO3QYTqo6zf6JWcmtKOchzSbJ7AWB6qjyODdXF4Fye2D+qvHJ3apkR7lewgSCiYKdZwY44fI2CVZHuuXiTj8Zarho5sIvIuR26fitQ8OkHSUT6FSjwqwX8pf7F03cj5OZyU6K7DAmwGRIWbz4nDheisiIxYYWLzoGdkYjV0Utknsp\/I3jgezAHURD\/VTIgwYdB+2UuuHtREX9fzUoywFZk1Djg6wQh8oQIdRgP3T2AVamwM3ZMncwRB1UhJfgXXRDAnCs02UGDF86ELJ5UDMMfuOfoqsZciobdxICPXAO8PRtSnUJECTqPuiEgYyySsaNVnJJeUm7OrfG4c6pBy4GWSdQV23o2YW7i0spwlEDH5LO8onfDUajoUwXghwoaNFaR10u+Fk2l+VBu6uW3rPNn\/AKBM9E6oz7Gsfo60jcyhE+IXJ2b5mQwCoxPiFa0c1nNnAx0KLoQI4ZGM8aHKeAS0joq8t2pZgrXHMZw2lNmtHiBdvIppPn0UYc3juHq3btHGrpvL4lV9bSi\/ZdonITqxFqRtiCEeC17eIZwc3j1uK6c6kNkLn8nQSN0ZDrp0Wh7pG6W2smQYqnYDcW2xZtrAYZIr+uEiMOdXadtJEz27KcYyMt2gIyPVN4vEpoidkREy1ICldIRgT1Kh7wLK2U7BkqlZieFbnJoklUTLdMlVVGfY8DBL0UoywlBTicKjEZu+qFF0IAmo1XGmzadDp9EOoWx3RxqMhVA04NOMvciWS27jI0SOByBgS10KvTEd2OqmDerlCYCcjonASPizBMrgAexTPGI3dkmV+sVOWyDKpffuLdl3k3OS5wMhULLskpKpFrByLX6qvHAD66oc2S9FOUC4bQaqtGdpZ0FSicJbEKUThMiGtjHQoOhIQ1+6hKYbGUbUbU5N11c5IRJrPuDT+7+qv1coSiM5VOsBzE9UqyudR3Vlh2TE5q8Gr\/2TE6u6VdzW1KzPft6lLJlI+RdECd2yxZyDMnslSJkWXACdFYppc6IJSbO01EJhiz\/RWBXtiyRYWwOqhs0qtIUYuubU0DCGUyauqe0KYoTNvVCfszP41BBbCEJmpCWuNU3WPmGQhNGdytMVPgqIFb6oQqMx0BU+T+6uUivoUISY0StMm8Q\/qqmTLywhClmtSeFxCFJYIQhIR\/\/Z","image":"\/9j\/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP\/sABFEdWNreQABAAQAAAAeAAD\/4QMpaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI\/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGQ0E3OUQyRDlDQkYxMUUxODMyQThCQTQ0RjhFMDFBRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGQ0E3OUQyRTlDQkYxMUUxODMyQThCQTQ0RjhFMDFBRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDQTc5RDJCOUNCRjExRTE4MzJBOEJBNDRGOEUwMUFGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZDQTc5RDJDOUNCRjExRTE4MzJBOEJBNDRGOEUwMUFGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+\/+4ADkFkb2JlAGTAAAAAAf\/bAIQAEAsLCwwLEAwMEBcPDQ8XGxQQEBQbHxcXFxcXHx4XGhoaGhceHiMlJyUjHi8vMzMvL0BAQEBAQEBAQEBAQEBAQAERDw8RExEVEhIVFBEUERQaFBYWFBomGhocGhomMCMeHh4eIzArLicnJy4rNTUwMDU1QEA\/QEBAQEBAQEBAQEBA\/8AAEQgAlgBkAwEiAAIRAQMRAf\/EAHwAAAIDAQEAAAAAAAAAAAAAAAADAgQFAQYBAAMBAQAAAAAAAAAAAAAAAAABAgMEEAABBAEDAwMCBQQDAAAAAAABABECAyExEgRBUSJhEwVxMoGRobEV0UJScjMUJBEAAgICAgMBAQAAAAAAAAAAAAERAiExUQNBEhNxIv\/aAAwDAQACEQMRAD8Are5PONNV02zAf0f80obuwyie4QOBouY6R2+z9WOnVG+xz5DAfUJUpbA85RiPVZ9\/zEIPGsbj3ZgmlOgcI1hKZI8hn1XPckI7jL8HWBL5flzDBo+oSv5DlGJiZu6fqyfZHoeQXhIO4D\/sq1Q8R9Fmcb5Ocd0LySJdexZlpceyFkAYl8IiBzI5kMususkBFkMpMuMgDjIXUIAo\/H86cyKrsy6S\/qrXL5EKaiZddFU4nx9ldgstkABnaMlR5ELudyvYjiNZyegTcSCmCjfybeVY8n9IjQIHEIHk69Hw\/jePTEARc9ZHUq2eDQS5iCl78Gi6eTyUeFyLMVwO1T\/jOXEOYEhevjTCIaIAC4ax2S+jK+KPFWVSjicTEjuuVX28ee+st6L1vI4lNoInEFYXP+KlU86vKHbqFVbp4Znbqayi1xOfVyIf4zH3RVj3Y9l5gTnVMSjghb1N0rqo2Bsj1TaghOSx7o7LnvYcR7fqlefouREtoyPyUjHe6f8AH0QlbT3H5IQB3kcmMKt0fInAHqVZ4FArg8vvnmZ9Vm1Vmd1cZaDyP4LYqwym3Bt1ryXI7QEwMyRBymgsFBskSdkDaoguukeiQ4FzAVW2DgqzPslTGE5E0ea+T4grPuwHjL7gOhUPirjGw0k4kHi\/cLa5NUZwlAjBC88AaOVEtiMltVyoOXsrFkzcXI\/aFIaKMftCkQeiF1CAOxA9\/A0AV2vRUazOVshHXQlTnPlVhxFx6JNZNqOEacJsR2TwayH6rGr50jibBWqr9+I5UtGqcmgJ1R6uuGyJPZUZ2yhmWFSt5Mplokv6JQNuDWnZEpM7IOzqjx6pyL2W7R2fKtTjREARk57oZMyJvLOO4WHy4R9wyGvVa18mPiXHVZPP+8SHUZV02Y9ujR45MqYE9lKP2D6KPH\/4If6hSj9o+iZB3CEIQAm680TJGkmSp\/I3jEQRE9Yh\/wBFYNPvHoW6FSjC+J8YxHqjHBolZrDgpyjypxE5jEvTP6LR+MhZVb5l3Gi7GuZ87ZO3QYTqo6zf6JWcmtKOchzSbJ7AWB6qjyODdXF4Fye2D+qvHJ3apkR7lewgSCiYKdZwY44fI2CVZHuuXiTj8Zarho5sIvIuR26fitQ8OkHSUT6FSjwqwX8pf7F03cj5OZyU6K7DAmwGRIWbz4nDheisiIxYYWLzoGdkYjV0Utknsp\/I3jgezAHURD\/VTIgwYdB+2UuuHtREX9fzUoywFZk1Djg6wQh8oQIdRgP3T2AVamwM3ZMncwRB1UhJfgXXRDAnCs02UGDF86ELJ5UDMMfuOfoqsZciobdxICPXAO8PRtSnUJECTqPuiEgYyySsaNVnJJeUm7OrfG4c6pBy4GWSdQV23o2YW7i0spwlEDH5LO8onfDUajoUwXghwoaNFaR10u+Fk2l+VBu6uW3rPNn\/AKBM9E6oz7Gsfo60jcyhE+IXJ2b5mQwCoxPiFa0c1nNnAx0KLoQI4ZGM8aHKeAS0joq8t2pZgrXHMZw2lNmtHiBdvIppPn0UYc3juHq3btHGrpvL4lV9bSi\/ZdonITqxFqRtiCEeC17eIZwc3j1uK6c6kNkLn8nQSN0ZDrp0Wh7pG6W2smQYqnYDcW2xZtrAYZIr+uEiMOdXadtJEz27KcYyMt2gIyPVN4vEpoidkREy1ICldIRgT1Kh7wLK2U7BkqlZieFbnJoklUTLdMlVVGfY8DBL0UoywlBTicKjEZu+qFF0IAmo1XGmzadDp9EOoWx3RxqMhVA04NOMvciWS27jI0SOByBgS10KvTEd2OqmDerlCYCcjonASPizBMrgAexTPGI3dkmV+sVOWyDKpffuLdl3k3OS5wMhULLskpKpFrByLX6qvHAD66oc2S9FOUC4bQaqtGdpZ0FSicJbEKUThMiGtjHQoOhIQ1+6hKYbGUbUbU5N11c5IRJrPuDT+7+qv1coSiM5VOsBzE9UqyudR3Vlh2TE5q8Gr\/2TE6u6VdzW1KzPft6lLJlI+RdECd2yxZyDMnslSJkWXACdFYppc6IJSbO01EJhiz\/RWBXtiyRYWwOqhs0qtIUYuubU0DCGUyauqe0KYoTNvVCfszP41BBbCEJmpCWuNU3WPmGQhNGdytMVPgqIFb6oQqMx0BU+T+6uUivoUISY0StMm8Q\/qqmTLywhClmtSeFxCFJYIQhIR\/\/Z"}
And this is the error I get:
05-14 14:13:00.723: E/log_tag(359): Error converting result org.json.JSONException: Value {"image":"\/9j\/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP\/sABFEdWNreQABAAQAAAAeAAD\/4QMpaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI\/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGQ0E3OUQyRDlDQkYxMUUxODMyQThCQTQ0RjhFMDFBRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGQ0E3OUQyRTlDQkYxMUUxODMyQThCQTQ0RjhFMDFBRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDQTc5RDJCOUNCRjExRTE4MzJBOEJBNDRGOEUwMUFGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZDQTc5RDJDOUNCRjExRTE4MzJBOEJBNDRGOEUwMUFGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+\/+4ADkFkb2JlAGTAAAAAAf\/bAIQAEAsLCwwLEAwMEBcPDQ8XGxQQEBQbHxcXFxcXHx4XGhoaGhceHiMlJyUjHi8vMzMvL0BAQEBAQEBAQEBAQEBAQAERDw8RExEVEhIVFBEUERQaFBYWFBomGhocGhomMCMeHh4eIzArLicnJy4rNTUwMDU1QEA\/QEBAQEBAQEBAQEBA\/8AAEQgAlgBkAwEiAAIRAQMRAf\/EAHwAAAIDAQEAAAAAAAAAAAAAAAADAgQFAQYBAAMBAQAAAAAAAAAAAAAAAAABAgMEEAABBAEDAwMCBQQDAAAAAAABABECAyExEgRBUSJhEwVxMoGRobEV0UJScjMUJBEAAgICAgMBAQAAAAAAAAAAAAERAiExUQNBEhNxIv\/aAAwDAQACEQMRAD8Are5PONNV02zAf0f80obuwyie4QOBouY6R2+z9WOnVG+xz5DAfUJUpbA85RiPVZ9\/zEIPGsbj3ZgmlOgcI1hKZI8hn1XPckI7jL8HWBL5flzDBo+oSv5DlGJiZu6fqyfZHoeQXhIO4D\/sq1Q8R9Fmcb5Ocd0LySJdexZlpceyFkAYl8IiBzI5kMususkBFkMpMuMgDjIXUIAo\/H86cyKrsy6S\/qrXL5EKaiZddFU4nx9ldgstkABnaMlR5ELudyvYjiNZyegTcSCmCjfybeVY8n9IjQIHEIHk69Hw\/jePTEARc9ZHUq2eDQS5iCl78Gi6eTyUeFyLMVwO1T\/jOXEOYEhevjTCIaIAC4ax2S+jK+KPFWVSjicTEjuuVX28ee+st6L1vI4lNoInEFYXP+KlU86vKHbqFVbp4Znbqayi1xOfVyIf4zH3RVj3Y9l5gTnVMSjghb1N0rqo2Bsj1TaghOSx7o7LnvYcR7fqlefouREtoyPyUjHe6f8AH0QlbT3H5IQB3kcmMKt0fInAHqVZ4FArg8vvnmZ9Vm1Vmd1cZaDyP4LYqwym3Bt1ryXI7QEwMyRBymgsFBskSdkDaoguukeiQ4FzAVW2DgqzPslTGE5E0ea+T4grPuwHjL7gOhUPirjGw0k4kHi\/cLa5NUZwlAjBC88AaOVEtiMltVyoOXsrFkzcXI\/aFIaKMftCkQeiF1CAOxA9\/A0AV2vRUazOVshHXQlTnPlVhxFx6JNZNqOEacJsR2TwayH6rGr50jibBWqr9+I5UtGqcmgJ1R6uuGyJPZUZ2yhmWFSt5Mplokv6JQNuDWnZEpM7IOzqjx6pyL2W7R2fKtTjREARk57oZMyJvLOO4WHy4R9wyGvVa18mPiXHVZPP+8SHUZV02Y9ujR45MqYE9lKP2D6KPH\/4If6hSj9o+iZB3CEIQAm680TJGkmSp\/I3jEQRE9Yh\/wBFYNPvHoW6FSjC+J8YxHqjHBolZrDgpyjypxE5jEvTP6LR+MhZVb5l3Gi7GuZ87ZO3QYTqo6zf6JWcmtKOchzSbJ7AWB6qjyODdXF4Fye2D+qvHJ3apkR7lewgSCiYKdZwY44fI2CVZHuuXiTj8Zarho5sIvIuR26fitQ8OkHSUT6FSjwqwX8pf7F03cj5OZyU6K7DAmwGRIWbz4nDheisiIxYYWLzoGdkYjV0Utknsp\/I3jgezAHURD\/VTIgwYdB+2UuuHtREX9fzUoywFZk1Djg6wQh8oQIdRgP3T2AVamwM3ZMncwRB1UhJfgXXRDAnCs02UGDF86ELJ5UDMMfuOfoqsZciobdxICPXAO8PRtSnUJECTqPuiEgYyySsaNVnJJeUm7OrfG4c6pBy4GWSdQV23o2YW7i0spwlEDH5LO8onfDUajoUwXghwoaNFaR10u+Fk2l+VBu6uW3rPNn\/AKBM9E6oz7Gsfo60jcyhE+IXJ2b5mQwCoxPiFa0c1nNnAx0KLoQI4ZGM8aHKeAS0joq8t2pZgrXHMZw2lNmtHiBdvIppPn0UYc3juHq3btHGrpvL4lV9bSi\/ZdonITqxFqRtiCEeC17eIZwc3j1uK6c6kNkLn8nQSN0ZDrp0Wh7pG6W2smQYqnYDcW2xZtrAYZIr+uEiMOdXadtJEz27KcYyMt2gIyPVN4vEpoidkREy1ICldIRgT1Kh7wLK2U7BkqlZieFbnJoklUTLdMlVVGfY8DBL0UoywlBTicKjEZu+qFF0IAmo1XGmzadDp9EOoWx3RxqMhVA04NOMvciWS27jI0SOByBgS10KvTEd2OqmDerlCYCcjonASPizBMrgAexTPGI3dkmV+sVOWyDKpffuLdl3k3OS5wMhULLskpKpFrByLX6qvHAD66oc2S9FOUC4bQaqtGdpZ0FSicJbEKUThMiGtjHQoOhIQ1+6hKYbGUbUbU5N11c5IRJrPuDT+7+qv1coSiM5VOsBzE9UqyudR3Vlh2TE5q8Gr\/2TE6u6VdzW1KzPft6lLJlI+RdECd2yxZyDMnslSJkWXACdFYppc6IJSbO01EJhiz\/RWBXtiyRYWwOqhs0qtIUYuubU0DCGUyauqe0KYoTNvVCfszP41BBbCEJmpCWuNU3WPmGQhNGdytMVPgqIFb6oQqMx0BU+T+6uUivoUISY0StMm8Q\/qqmTLywhClmtSeFxCFJYIQhIR\/\/Z","2":"\/9j\/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP\/sABFEdWNreQABAAQAAAAeAAD\/4QMpaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI\/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm
Can anyone tell me, what I'm doing wrong and how to fix it?
Thanks in advance
Peter
The data they're supplying for json_data.getString("image") is not a string.
It's an image.
Check the JSON manually. It it's outputting image data then you need to get them to change the JSON. E.g. it should look like this:
"src": "Images/theImage.png",
I want to call specific php function on server and also to send some parameters.
Till now I achieved that I can open php file using HttpClient and executed data transfer to Json and show that in my app.
So, now I want to be able to call specific function and send parameter to it, how can I do that??
Sorry I didn't mansion that I need to call that function from Android.
here some code:
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://10.0.2.2/posloviPodaci/index.php");
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection" + e.toString());
}
// Convert response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = "0";
while((line = reader.readLine()) != null){
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
// Parsing data
JSONArray jArray;
try {
jArray = new JSONArray(result);
JSONObject json_data = null;
items = new String[jArray.length()];
for(int i = 0; i < jArray.length(); i++) {
json_data = jArray.getJSONObject(i);
items[i] = json_data.getString("naziv");
}
} catch (Exception e) {
// TODO: handle exception
}
Thanks in advance,
Wolf.
If you are working with an MVC framework, such as CakePHP, you can simply create a route to a function that will output whatever JSON you'd like.
Otherwise,
You can utilize something simple at the top of your index.php such as this:
<?php
function foo($bar) { echo $bar; }
if(isset($_GET['action']) && (strlen($_GET['action']) > 0)) {
switch($_GET['action']) :
case 'whatever':
echo json_encode(array('some data'));
break;
case 'rah':
foo(htmlentities($_GET['bar']));
break;
endswitch;
exit; # stop execution.
}
?>
This will let you call the url with a parameter of action.
http://10.0.2.2/posloviPodaci/index.php?action=whatever
http://10.0.2.2/posloviPodaci/index.php?action=rah&bar=test
If you need to pass more sensitive data, I recommend you stick with $_POST and utilize some form of encryption.
You can handle that on php side. Create a Json object with a field called command and maybe a list of arguments.
On the php end after you decode the json just do:
if($obj.command == "foo"){
foo($obj.arg[0],$obj.arg[1]);
}