I don't know anything about Ruby, but I think what I'm trying to do is pretty simple. I have an app that needs to send a url query like this to a heroku database: http://dartmouth.heroku.com/dnd/search.json?query=sebastian, then receive the data that comes back and organize it for the user. How do I send and recieve a query like this?
EDIT: I downloaded Spring and added the rest template jar to my projects build path. I tried using this code:
String url = "http://dartmouth.heroku.com/dnd/" + dataBase + "json?query=" + searchContent;
RestTemplate rstTemplate = new RestTemplate();
PersonList pList = rstTemplate.getForObject(url, PersonList.class);
but "RestTemplate" is not recognized. Did I miss an installation step?
You need to start by making an HTTP request for the data and then parsing the results. I would suggest trying out the Spring Android library to accomplish this: http://www.springsource.org/spring-android
Check out the explanation here: http://mike.bailey.net.au/2011/02/json-with-ruby-and-rails/
You can use a plugin called HttpParty for sending the request. Ruby on rails will interpret the json response by using the json library. The example on the above mentioned page might make things clearer.
Related
I'm currently working on an android project. In this project, I pass data name, message, and email to the server through a simple PHP code. But now I want to pass these data to the server through Laravel, because the project is in Laravel.
Android data
String name = params[1];
String message = params[2];
String mail = params[3];
And pass this data to Laravel. Here is the code. The folder in which this file is present. Apps/Http/ . Now how we write the android code to pass this data to route easily.
Route::get('/message/{userid}','MapController#sendalert');
Route::post('/mymessage','MapController#myalert');
It seems you already know how to post since you can post to "simple php". Now what you want is build an API with Laravel. Once ready you can post your data to a URL rather than a php file, like
POST
https://www.mywebsite.com/api/comments
And your controller will take over. There are several steps involved in this process with a lot of resources available online like these:
http://esbenp.github.io/2016/04/11/modern-rest-api-laravel-part-1/
https://www.codetutorial.io/laravel-5-rest-api-basic-authentication/
Those should get you started.
I'm new in Android development. I have a lot of file .JSON that I want to take by REST requests in my app. Is there a JSON local server for Android where I can save these file and do some REST requests?
Thanks
Go through with this url :-
https://github.com/typicode/json-server.
I stumbled to and used SyncAdapter and json-server to firebase and I treated android like a web-app
I noticed that the guide used uri and json parsing so I imported my fake rest db.json to firebase and used the link on https://console.firebase.google.com/project/new-firebase-app/database/data
...
final String rest = "https://new-firebase-app.firebaseio.com/people.json";
// Parse the pretend json news feed
String jsonFeed = download(rest);
JSONArray jsonPeople = new JSONArray(jsonFeed);
...
This might help.
someone may asked my question already but I cannot find any suggestions.
I writing an Android app which needs to access my Django server by using HttpsURLConnection then Django server will return a JSON array to Android.
The view function in Django will receive the parameters from request.POST and generate the JSON array then return using HTTPResponse Django method. It does not need any Templates and Forms.
When I call the Django view function from Android, it returns 403 error. I know that it is because the POST data does not contains "csrf_token".
My problem is: How can I get the "csrf_token" and put it into my POST data before I send it to Django? I try disable the CSRF checking by "#csrf_exempt" it can return the correct result to Android app but I would not disable the CSRF checking.
Thanks,
Wilson
You have to send the cookies and also have to send a header 'X-CSRFToken' with csrftoken.
This is what I do (may not be the best way):
Get csrf token via a get request.But first try to see if you get a csrftoken cookie by doing same request on your browser with developer tools. If not, you should use ensure_csrf_cookie decorator
from django.views.decorators.csrf import ensure_csrf_cookie
#ensure_csrf_cookie
def your_view(request):
pass
Now using the same HttpUrlConnection object do this :
String cookieString="";
String csrftoken="";
// The below code can be shortened using for-each loop
List<HttpCookie> cookies=cookieManager.getCookieStore().getCookies();
Iterator<HttpCookie> cookieIterator=cookies.iterator();
while(cookieIterator.hasNext()){
HttpCookie cookie=cookieIterator.next();
cookieString+=cookie.getName()+"="+cookie.getValue()+";";
if(cookie.getName().equals("csrftoken")){
csrftoken=cookie.getValue();
}
}
Add the following to your post request:
urlConnection.setRequestProperty("X-CSRFToken", csrftoken);
urlConnection.setRequestProperty("Cookie", cookieString);
Most of the backend stuff is in PHP which handle JSON request and response flow of data from Android app to backend.
I'd like to start writing Python code to handle the extra features I'm going to add in my app. How can I do that? Do I need to install Django or something like it in the backend? Our webhost does show "Python support". I'm guessing just a couple of Python classes and some helper library files would suffice.
But here's where I'm conceptually stuck:
In Android, on the app, in the user's side, suppose I send all my queries to backend with this function:
//Pseudo code on Android app
getServerResponse()
{
url = " ??? ";
jsondata = {somedata[a:b]};
response = sendData_andGetResponse(jsondata); // suppose this function sens json data and expects a server response.
showResults(response);
//Pseudo code on backend - BackendProcessing.py
def processRequest():
# some processing done here
response = "some_processed_data"
return response
My problem is, what and how do I integrate the backend Python code and the client side Android app code to communicate with each other. What should the URL be in my Android code to pass data from user to backend? How do I link them?
Do I need to specially setup some third party Python API to handle calls from the Android app at the backend? Or can I just do it with simple Python functions and classes with HTTP request and responses coming in for a particular URI?
You can include URL of the backend server in the android code. Define a variable for the URL of your backend server and use Httppost method for communication between backend and frontend.
Details here http://developer.android.com/reference/org/apache/http/client/methods/HttpPost.html
You can do it with simple Python functions and classes with HTTP request and responses coming in for a particular URI. A third party Python API is not necessary.
You can also use Python based web frameworks like Django for the backend.
I like to raise some questions regrading Yii framework and Android applications. I am going to build a mobile application in Android platform and implementing Yii framework as server side. I like to know how much Yii framework supports Android platform? Are Yii framework web services fully compatible with Android?
And, if can anyone suggest some tutorial or useful information, that will be very useful to me...
Check out this: Yii REST API
You can use JSON / XML to communicate your android application with the php yii framework by building a simple REST API.
In order to do use the REST API this, you need to send HTTP request (Get / Post) from Android application. Then perform your operation based upon the request and send again in JSON formate using php json_encode or XML if you preferred.
You can also perform it using google Gson. it will help you to create JSON from java object.
Refer this: Simple API using Yii
I have done similar recently,
Yii side
you need custom controller sending json array and you can refer Yii REST API
public function actionTest()
{
$commands = Command::model()->findAll();
$cmdlist = array();
if( $commands != '0'){
foreach( $commands as $item )
{
$object = array();
$object ['cmd'] = $item->command;
$object ['command'] = $item->getCommandOptions($item->command);
$object ['number'] = $item->number;
$object ['id'] = $item->id;
$cmdlist[] = $object;
}
$arr['command'] = $cmdlist;
}
header('Content-type: application/json');
echo json_encode($arr);
Yii::app()->end();
}
android side
You need a neat Async Http client with Json parser. I used android-async-http
I have an Android application that is on the market that I am switching to using the Yii framework. I use the http://www.yiiframework.com/extension/restfullyii/ extension. So far it's been great. I had a couple of issues with security and other things but overall the tool is what you will need. All you really care about for yii is having a restful API the rest of the logic should really be handled in your Android application. Also as a response type at this point I would only use json. I tried to implement a Android XML framework and decided to pull back because json did everything I needed to and was easy.