
我一直试图从SO和其他网站上的大量例子中学习,但我无法弄清楚为什么我一起攻击的例子不起作用.我正在构建一个小概念验证应用程序来识别语音并将其作为POST请求发送到node.Js服务器.语音识别我已经确认工作,服务器正在接收来自常规浏览器访问的连接,因此我认为问题出在应用程序本身.我错过了一些小而愚蠢的东西吗?没有错误被抛出,但服务器永远不会识别连接.提前感谢任何建议或帮助.
相关Java(主要活动和必要的AsyncTask):
protected voID onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1001) { if (resultCode == RESulT_OK) { ArrayList<String> textMatchList = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESulTS); if (!textMatchList.isEmpty()) { String topMatch = textMatchList.get(0); PostTask pt = new PostTask(); pt.execute(topMatch); } } }}private class PostTask extends AsyncTask<String, String, String> { @OverrIDe protected String doInBackground(String... data) { try { URL url = new URL("http://<ip address>:3000"); httpURLConnection conn = (httpURLConnection) url.openConnection(); conn.setReadTimeout(10000); conn.setConnectTimeout(15000); conn.setRequestMethod("POST"); conn.setDoOutput(true); ContentValues values = new ContentValues(); values.put("data", data[0]); OutputStream os = conn.getoutputStream(); BuffereDWriter writer = new BuffereDWriter(new OutputStreamWriter(os, "UTF-8")); StringBuilder sb = new StringBuilder(); sb.append(URLEncoder.encode("data", "UTF-8")); sb.append("="); sb.append(URLEncoder.encode(data[0], "UTF-8")); writer.write(sb.toString()); writer.flush(); writer.close(); os.close(); conn.connect(); return "Text sent: " + data[0]; } catch (IOException e) { e.printstacktrace(); return "Lol nopE"; } }}服务器Js:
var http = require('http');const PORT=3000;function handleRequest(request, response){ response.end('It Works!! Path Hit: ' + request.url); console.log("Request got.");}var server = http.createServer(handleRequest);server.Listen(PORT, '0.0.0.0');console.log("Listening on 3000...");解决方法:
您可以使用Apache Commons的http ClIEnt.例如:
private class PostTask extends AsyncTask<String, String, String> { @OverrIDe protected String doInBackground(String... data) { // Create a new httpClIEnt and Post header httpClIEnt httpclIEnt = new DefaulthttpClIEnt(); httpPost httppost = new httpPost("http://<ip address>:3000"); try { //add data List<nameValuePair> nameValuePairs = new ArrayList<nameValuePair>(1); nameValuePairs.add(new BasicnameValuePair("data", data[0])); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); //execute http post httpResponse response = httpclIEnt.execute(httppost); } catch (ClIEntProtocolException e) { } catch (IOException e) { } }}UPDATE
您可以使用Volley AndroID Networking library发布您的数据.官方文件是here.
我个人使用Android Asynchronous Http Client进行少数REST客户端项目.
其他值得探索的工具是Retrofit.
总结以上是内存溢出为你收集整理的java – 使用Android发送HTTP Post请求全部内容,希望文章能够帮你解决java – 使用Android发送HTTP Post请求所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)