安卓语音合成,上传文本到服务器,接受服务器返回字段进行处理。

1. 测试安卓端发送特定字段到服务器是否连接成功

实习的时候,上面先给我一个小任务。在安卓上先测试是否能建立到后端的http的post请求。

后端的服务器开发者给我的接口是只接受三个字段,分别是{“src_text”:“水水水水水水水水水水水水水水水水水水”,“VerifyValue”:“36”,“Id”:“fs13a2ztDd2gK1UHqXZa”}

我准备在安卓上,当点击提交按钮的时候,exitview上面的内容即文本内容srctext。后面的两个字段不重要,随意填写,其实src_text也是随意写也行。不影响返回200.

直接上安卓代码:
activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/et_word"
        android:layout_width="match_parent"
        android:layout_height="457dp"
        android:hint="请输入文字" />

    <Button
        android:id="@+id/bt_upload"
        android:layout_width="match_parent"
        android:layout_height="89dp"
        android:onClick="upload"
        android:text="上传文件" />

</LinearLayout>

MainActivity.java

package com.xvoice.postdemo;


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.EditText;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;

import java.util.HashMap;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import com.xvoice.postdemo.R;

import com.xvoice.postdemo.server.HttpConnectionUtil;

import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {
    @BindView(R.id.et_word)
    EditText Et_word;
    @BindView(R.id.bt_upload)
    Button Bt_upload;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

    }

    @OnClick(R.id.bt_upload)
    public void clickUpload() {
         

        final String res=Et_word.getText().toString();
        final String src_text=res;
        final String VerifyValue="12";
        final String Id="fs13a2ztDd2gK1UHqXZa";
        new Thread(){
            public void run() {
                try{
                    httpUrlConnPost(src_text,VerifyValue,Id);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }.start();

    }
    public void httpUrlConnPost(String src_text,String VerifyValue,String Id){
        HttpURLConnection urlConnection = null;
        URL url = null;
        try {
            url = new URL("http://192.168.1.210:123/xxxxx");
            urlConnection = (HttpURLConnection) url.openConnection();//打开http连接
            urlConnection.setConnectTimeout(3000);//连接的超时时间
            urlConnection.setUseCaches(false);//不使用缓存
            //urlConnection.setFollowRedirects(false);是static函数,作用于所有的URLConnection对象。
            urlConnection.setInstanceFollowRedirects(true);//是成员函数,仅作用于当前函数,设置这个连接是否可以被重定向
            urlConnection.setReadTimeout(3000);//响应的超时时间
            urlConnection.setDoInput(true);//设置这个连接是否可以写入数据
            urlConnection.setDoOutput(true);//设置这个连接是否可以输出数据
            urlConnection.setRequestMethod("POST");//设置请求的方式
            urlConnection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");//设置消息的类型
            urlConnection.connect();// 连接,从上述至此的配置必须要在connect之前完成,实际上它只是建立了一个与服务器的TCP连接
            JSONObject json = new JSONObject();//创建json对象
            json.put("src_text", URLEncoder.encode(src_text, "UTF-8"));//使用URLEncoder.encode对特殊和不可见字符进行编码
            json.put("VerifyValue", URLEncoder.encode(VerifyValue, "UTF-8"));//把数据put进json对象中
            json.put("Id", URLEncoder.encode(Id, "UTF-8"));//把数据put进json对象中
            String json_str = json.toString();//把JSON对象按JSON的编码格式转换为字符串
            System.out.println(json_str+"打印了json");
            //-------------使用字节流发送数据--------------
            //OutputStream out = urlConnection.getOutputStream();
            //BufferedOutputStream bos = new BufferedOutputStream(out);//缓冲字节流包装字节流
            //byte[] bytes = jsonstr.getBytes("UTF-8");//把字符串转化为字节数组
            //bos.write(bytes);//把这个字节数组的数据写入缓冲区中
            //bos.flush();//刷新缓冲区,发送数据
            //out.close();
            //bos.close();
            //------------字符流写入数据------------
            OutputStream out = urlConnection.getOutputStream();//输出流,用来发送请求,http请求实际上直到这个函数里面才正式发送出去
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));//创建字符流对象并用高效缓冲流包装它,便获得最高的效率,发送的是字符串推荐用字符流,其它数据就用字节流
            bw.write(json_str);//把json字符串写入缓冲区中
            bw.flush();//刷新缓冲区,把数据发送出去,这步很重要
            out.close();
            bw.close();//使用完关闭

            if(urlConnection.getResponseCode()==HttpURLConnection.HTTP_OK){//得到服务端的返回码是否连接成功
                //------------字节流读取服务端返回的数据------------
                //InputStream in = urlConnection.getInputStream();//用输入流接收服务端返回的回应数据
                //BufferedInputStream bis = new BufferedInputStream(in);//高效缓冲流包装它,这里用的是字节流来读取数据的,当然也可以用字符流
                //byte[] b = new byte[1024];
                //int len = -1;
                //StringBuffer buffer = new StringBuffer();//用来接收数据的StringBuffer对象
                //while((len=bis.read(b))!=-1){
                //buffer.append(new String(b, 0, len));//把读取到的字节数组转化为字符串
                //}
                //in.close();
                //bis.close();
                //Log.d("zxy", buffer.toString());//{"json":true}
                //JSONObject rjson = new JSONObject(buffer.toString());//把返回来的json编码格式的字符串数据转化成json对象
                //------------字符流读取服务端返回的数据------------
                InputStream in = urlConnection.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(in));
                String str = null;
                StringBuffer buffer = new StringBuffer();
                while((str = br.readLine())!=null){//BufferedReader特有功能,一次读取一行数据
                    buffer.append(str);
                }
                in.close();
                br.close();
                JSONObject rjson = new JSONObject(buffer.toString());

                Log.d("返回的json数据", "rjson="+rjson);//rjson={"json":true}
                System.out.println("Connection_success:  "+urlConnection.getResponseCode());
            }else{
                System.out.println("Connection_FAILED");
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Try_FAILED");
        }finally{
            urlConnection.disconnect();//使用完关闭TCP连接,释放资源
        }
    }

}
2.对服务器返回Base64加密字符串进行解密转语音,并播放语音。

参考



此项目完整代码见:github第一个小项目,谢谢加星

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值