So it looks like your trying to connect to a server.... What remote
web services are you using.
For a scanner project I created last semester, I used XAMPP
locally(just to see code work correctly), then I used Teamviewer when
I went live.
On the remote server file, I placed a php file with the JSON object to
reference in the android code. Your code looks fine, however, I've
learn it's not just this code that you may need. I connected my code
using a button called my SQL... I'll post the code below... hope this
helps...
Also, something I didn't find out until the end, but make sure your
server PHP and code are up to date...I ran into a last minute issue I
had to correct on the server side...
This is the button code (click button, sends data to mySQL server from
anywhere)
case R.id.buttonSQL1:
try {
JSONObject json = new JSONObject();
json.put("barcode", mbarcodeEdit.getText());
json.put("description", description.getText());
json.put("make", make.getText());
json.put("serial", serial.getText());
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams,
TIMEOUT_MILLISEC);
HttpConnectionParams.setSoTimeout(httpParams,
TIMEOUT_MILLISEC);
HttpClient client = new
DefaultHttpClient(httpParams);
String url =
"http://10.0.2.2:8080/webservice4.php"; //
needed for the php file pass over
HttpPost request = new HttpPost(url);
request.setEntity(new
ByteArrayEntity(json.toString().getBytes(
"UTF8")));
request.setHeader("json", json.toString());
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
// If the response does not enclose an entity,
there is no
need
if (entity != null) {
InputStream instream =
entity.getContent();
String result =
RestClient.convertStreamToString(instream);
Log.i("Read from server", result);
Toast.makeText(this, result,
Toast.LENGTH_LONG).show();
}
} catch (Throwable t) {
Toast.makeText(this, "Request failed: " +
t.toString(),
Toast.LENGTH_LONG).show();
}
// showDialog(DIALOG_ID);
break;
}
}
Also you need to insert this code (a separate java file called
RestClient)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class RestClient {
public static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new
InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
public static void connect(String url)
{
HttpClient httpclient = new DefaultHttpClient();
// Prepare a request object
HttpGet httpget = new HttpGet(url);
// Execute the request
HttpResponse response;
try {
response = httpclient.execute(httpget);
// Examine the response status
Log.i("Praeda",response.getStatusLine().toString());
// Get hold of the response entity
HttpEntity entity = response.getEntity();
// If the response does not enclose an entity, there is no
need
// to worry about connection release
if (entity != null) {
// A Simple JSON Response Read
InputStream instream = entity.getContent();
String result= convertStreamToString(instream);
Log.i("Praeda",result);
// A Simple JSONObject Creation
JSONObject json=new JSONObject(result);
Log.i("Praeda","<jsonobject>\n"+json.toString()+"\n</
jsonobject>");
// A Simple JSONObject Parsing
JSONArray nameArray=json.names();
JSONArray valArray=json.toJSONArray(nameArray);
for(int i=0;i<valArray.length();i++)
{
Log.i("Praeda","<jsonname"+i+">
\n"+nameArray.getString(i)+"\n</jsonname"+i+">\n"
+"<jsonvalue"+i+">\n"+valArray.getString(i)
+"\n</jsonvalue"+i+">");
}
// A Simple JSONObject Value Pushing
json.put("sample key", "sample value");
Log.i("Praeda","<jsonobject>\n"+json.toString()+"\n</
jsonobject>");
// Closing the input stream will trigger connection
release
instream.close();
}
} 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();
}
}
}
Remember to add your permissions in you xml Manifest file...
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" /
>
Here's an example of the PHP code I placed on my server...
<?php
$json = file_get_contents('php://input');
$obj = json_decode($json);
//echo $json;
$con = mysql_connect('localhost','Username','password') or die
('Cannot connect to the DB');
mysql_select_db('tlmcqueen',$con);
/* grab the posts from the db */
//$query = "SELECT post_title, guid FROM wp_posts WHERE post_author
= $user_id AND post_status = 'publish' ORDER BY ID DESC LIMIT
$number_of_posts";
mysql_query("INSERT INTO `databasename`.`assets` (barcode,
description, make, serial)
VALUES ('".$obj->{'barcode'}."', '".$obj->{'description'}."','".$obj-
>{'make'}."','".$obj->{'serial'}."')");
mysql_close($con);
//
//$posts = array($json);
$posts = array(1);
header('Content-type: application/json');
echo json_encode(array('posts'=>$posts));
?>
On Feb 18, 2:09 pm, Mark Turkel <[email protected]> wrote:
> Hi All,
>
> I have an IIS service (.net) that I'm obviously not passing the
> correct json message to. I have tried many of the examples I have
> found on the web, but they all seem to point to PHP services. I'm
> doing everything as everyone else is...and the json string looks as it
> should. Can someone please let me know the big secret? :) This
> should not take 2 days of my life to figure out... LOL!
>
> Thank in advance for your help!
> Mark Turkelhttp://www.PalmBeachSoftware.com
>
> Here's what I'm trying to post:
>
> String baseurlString = "http://MYSERVER.com/Service/SurfReport";
>
> JSONObject json = new JSONObject();
> try {
> json.put("UserID",
> "00000000-0000-0000-0000-000000000001");
> json.put("City", "Boynton Beach");
> json.put("State", "FL");
> json.put("Country", "USA");
> json.put("Longitude", "-80.06643");
> json.put("Latitude", "26.525359");
> json.put("RptDate", "02/17/2012");
> json.put("WaveHeight", "3");
> json.put("ConditionID", "1");
> json.put("Comments", "Go get wet!");
> } catch (JSONException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
>
> public void testPost(String baseurlString, final JSONObject json) {
> try {
>
> HttpParams httpParams = new BasicHttpParams();
> HttpConnectionParams.setConnectionTimeout(httpParams,
> TIMEOUT_MILLISEC);
> HttpConnectionParams.setSoTimeout(httpParams,
> TIMEOUT_MILLISEC);
> HttpClient client = new DefaultHttpClient(httpParams);
>
> HttpPost request = new HttpPost(baseurlString);
> request.addHeader("Content-Type", "application/json;
> charset=utf-8");
>
> request.setEntity(new
> ByteArrayEntity(json.toString().getBytes("UTF8")));
> request.setHeader("json", json.toString());
>
> HttpResponse response = client.execute(request);
> HttpEntity entity = response.getEntity();
>
> // If the response does not enclose an entity, there
> is no need
> if (entity != null) {
> InputStream instream = entity.getContent();
>
> String result =
> RestClient.convertStreamToString(instream);
> Log.i("MARK","RESULT from server: " + result);
> Log.i("MARK", "sending surf report to:" + baseurlString +
> ": " + request.getRequestLine() + json.toString());
>
> }
> } catch (Throwable t) {
> Toast.makeText(this, "Request failed: " + t.toString(),
> Toast.LENGTH_LONG).show();
> }
> }
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en