2016-02-05 3 views
-1

Я изучаю Android и webservices. У меня есть приложение для Android, которое отправляет данные с использованием okHttp, и мне нужно глотать эти данные на моем сервере и помещать их в базу данных. У меня есть небольшой опыт вызова и получения данных от webservices, но они никогда не получали данных.ASP.NET Как получить данные HTTP из приложения Android, используя OkHttp

Как я понимаю, в ASP.Net мне нужно будет использовать HttpHandler, и я видел несколько примеров, но они всегда возвращают данные по запросу. Как вы сохраняете HttpHandler, всегда слушая эти данные?

Вот код из моего приложения для Android.

public class MainActivity extends Activity { 

TextView outputText; 
Button sendData; 
EditText edtUser, edtPass; 
final String URL = "http://serviceapi.skholingua.com/open-feeds/display_received_params.php"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    outputText = (TextView) findViewById(R.id.textView1); 
    outputText.setMovementMethod(new ScrollingMovementMethod()); 
    sendData = (Button) findViewById(R.id.button1); 
    edtUser = (EditText) findViewById(R.id.editText1); 
    edtPass = (EditText) findViewById(R.id.editText2); 

    sendData.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      String userName = edtUser.getText().toString(); 
      String passWord = edtPass.getText().toString(); 
      OkHttpHandler handler = new OkHttpHandler(userName, passWord); 
      String result = null; 
      try { 
       result = handler.execute(URL).get(); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (ExecutionException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      outputText.append(result + "\n"); 
     } 
    }); 
} 

Класс

public class OkHttpHandler extends AsyncTask<String, Void, String> { 

OkHttpClient client = new OkHttpClient(); 
String userName, passWord; 

public OkHttpHandler(String userName, String passWord) { 
    // TODO Auto-generated constructor stub 
    this.userName = userName; 
    this.passWord = passWord; 
} 

@Override 
protected String doInBackground(String... params) { 

    RequestBody formBody = new FormEncodingBuilder() 
      .add("name", userName) 
      .add("pass", passWord) 
      .build(); 
    Request request = new Request.Builder() 
      .url(params[0]).post(formBody) 
      .build(); 
    try { 
     Response response = client.newCall(request).execute(); 
     if (!response.isSuccessful()) 
      throw new IOException("Unexpected code " + response.toString()); 
     return response.body().string(); 

    } catch (Exception e) { 
    } 

    return null; 
} 

URL будет изменено на то, что я создаю на моем сервере. Мой вопрос: какой тип данных будет отправлен? Что мне нужно создать на моем сервере, чтобы глотать его? Если у кого-то есть пример, который был бы очень полезен.

ответ

0

Изучите веб-API.

Пример для чтения POST для адреса hxxp: // yourdomain/test/[variable]/[variable] и GET для адреса hxxp: // yourdomain/test/[id]. Например:

hxxp://yourdomain/test2/1 will return the string "You requested number 1" 

hxxp://yourdomain/test2/2 will return the string "You requested number 2" 

Контроллер:

public class TestController : ApiController {  
    [Route("test/{username}/{password}")] 
    [AcceptVerbs("POST")] 
    public string Post(string username, string password) { 
     if(username == "user" && password == "pass") { // check user/pass 
      string data = Request.Content.ReadAsStringAsync().Result; 
      //do something 
      return "User is authenticated"; 
     } 
    } 

    [Route("test2/{id}")] { 
    [AcceptVerbs("GET")] 
    public string GetData(int id) { 
     return "You requested number " + id; 
    } 
} 

В вашем примере выше вы могли бы назвать:

hxxp://yourdomain/test/name/pass 

И получить ответ "Пользователь аутентифицирован"

+0

Эй .. Спасибо для справки. Я сейчас изучаю веб-API, но все еще запутался ... Не могли бы вы рассказать о том, что ваш пример выше? Поиск веб-API Я нахожу множество примеров о том, как получать данные из веб-службы, но не так много, как слушать отправку данных на ваш сервис. – meyvn

+0

обновленный пример – Mattias

Смежные вопросы