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
将更改为我在服务器上创建的任何内容。我的问题是..这将发送什么类型的数据?我需要在服务器上创建什么才能摄取它?如果有人有一个例子,那将非常有帮助。
查看 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
并得到响应"用户已通过身份验证"