ASP.NET 如何使用OkHttp从Android应用程序接收HTTP数据

本文关键字:应用程序 HTTP 数据 Android NET 何使用 OkHttp ASP | 更新日期: 2023-09-27 18:33:29

我正在学习安卓和webservices。我有一个使用 okHttp 发送数据的 android 应用程序,我需要在我的服务器上摄取该数据并将其放入数据库中。我有一点从webservices打电话和获取数据的经验,但从未收到过数据。

据我了解,ASP.Net 我需要使用HttpHandler并且我已经看到了一些示例,但它们似乎总是根据请求返回数据。如何让HttpHandler始终侦听这些特定的传入数据?

这是我的示例安卓应用程序中的代码。

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将更改为我在服务器上创建的任何内容。我的问题是..这将发送什么类型的数据?我需要在服务器上创建什么才能摄取它?如果有人有一个例子,那将非常有帮助。

ASP.NET 如何使用OkHttp从Android应用程序接收HTTP数据

查看 Web API。

读取 POST 以地址 hxxp://yourdomain/test/[变量]

/[变量] 和 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

并得到响应"用户已通过身份验证"