最近突发奇想用java去请求python写的接口结果出问题了 10C

python代码如下:

import tornado
from wtforms_tornado import Form
import sys


class hello(tornado.web.RequestHandler):
    def get(self):
        self.render("hello.html")
class ajaxtest(tornado.web.RequestHandler):
    def set_default_headers(self):
        print("setting headers!!!")
        self.set_header("Access-Control-Allow-Origin", "*")
        self.set_header("Access-Control-Allow-Headers", "x-requested-with")
        self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
    def get(self):


        data="你好我是刘德华"
        #data.encode("utf-8")
        print("get")
        self.write(data)
    def post(self):
        import json
        res=dict(
            hel="你好我是刘德华",
            d="ee"
        )

        json = json.dumps(res)
        print("post")
        self.write(json)

python的代码应该是没有问题的 问题应该出在java上因为用直接用jQuery ajax请求是完全没有问题的
java代码如下:

 package xiaoxiaomo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

public class test {
    /**
     * 向指定URL发送GET方法的请求
     * 
     * @param url
     *            发送请求的URL
     * @param param
     *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return URL 所代表远程资源的响应结果
     */
    public test() {
        // TODO Auto-generated constructor stub
    }
    public static String sendGet(String url, String param) {
        String result = "";
        BufferedReader in = null;
        try {
            String urlNameString = url + "?" + param;
            URL realUrl = new URL(urlNameString);
            // 打开和URL之间的连接
            URLConnection connection = realUrl.openConnection();
            // 设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 建立实际的连接
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet()) {
                System.out.println(key + "--->" + map.get(key));
            }
            // 定义 BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送GET请求出现异常!" + e);
            e.printStackTrace();
        }
        // 使用finally块来关闭输入流
        finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return result;
    }

    /**
     * 向指定 URL 发送POST方法的请求
     * 
     * @param url
     *            发送请求的 URL
     * @param param
     *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return 所代表远程资源的响应结果
     */
    public static String sendPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!"+e);
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    }    
    public static String getEncoding(String str) {        
        String encode = "GB2312";        
       try {        
           if (str.equals(new String(str.getBytes(encode), encode))) {      //判断是不是GB2312  
                String s = encode;        
               return s;      //是的话,返回“GB2312“,以下代码同理  
            }        
        } catch (Exception exception) {        
        }        
        encode = "ISO-8859-1";        
       try {        
           if (str.equals(new String(str.getBytes(encode), encode))) {      //判断是不是ISO-8859-1  
                String s1 = encode;        
               return s1;        
            }        
        } catch (Exception exception1) {        
        }        
        encode = "UTF-8";        
       try {        
           if (str.equals(new String(str.getBytes(encode), encode))) {   //判断是不是UTF-8  
                String s2 = encode;        
               return s2;        
            }        
        } catch (Exception exception2) {        
        }        
        encode = "GBK";        
       try {        
           if (str.equals(new String(str.getBytes(encode), encode))) {      //判断是不是GBK  
                String s3 = encode;        
               return s3;        
            }        
        } catch (Exception exception3) {        
        }        
       return "";   
    }
    public static void main(String[] args) throws UnsupportedEncodingException {
         //发送 GET 请求
        String s=test.sendGet("http://127.0.0.1:9999/ajax", "key=123&v=456");
//       String str=new String(s.getBytes(),"utf-8");
       String type=getEncoding(s);
       System.out.println("字符串的编码是:"+type);
        System.out.println(s);

        //发送 POST 请求
//        String sr=test.sendPost("http://localhost:6144/Home/RequestPostString", "key=123&v=456");
//        System.out.println(sr);
    }
}

执行效果如下中文乱码:
图片说明
然后我转了字符串编码为utf-8执行结果如下最后一个字显示问号
图片说明
后面没有办法,我在python就把字符串转为utf-8
图片说明
结果执行以后编码是utf-8没错 但是还是乱码 这是咋回事啊
图片说明

0

5个回答

已经解决了 我新下载的eclipse忘记吧编码设置成utf-8

1

第一次执行的时候,没有在python设置字符编码的时候打印的字符编码是GB2312,我截图错了

0

经过测试发现字符串中文字数大于等于8就没有问题 小于把就有问题

0

可能的解决方式(未实验):
1、接收数据的时候不要用Reader,直接接收字节流,然后转为UTF-8。
2、创建InputStreamReader时指定编码为UTF-8。(有一个构造器可以给定编码)

0

ajax可以请求的话
你这跟java什么的也没关系啊,你充其量就是用java模拟了一个ajax请求
你用C也可以吧

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
[leetcode]最近的请求次数
933. 最近的请求次数 写一个 RecentCounter 类来计算最近的请求。 它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。 返回从 3000 毫秒前到现在的 ping 数。 任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping。 保证每次对 ping 的调用都使用比之前更大的 t 值。 示例:...
简单的python http接口自动化脚本
今天给大家分享一个简单的python脚本,使用python进行http的接口测试,脚本很简单,逻辑是:读取excel写好的测试用例,然后根据excel中的用例内容进行调用,判断预期结果中的返回值是否和返回报文中的值一致,如果不一致则根据用例标题把bug提交到bug管理系统,这里使用的bug管理系统是bugfree。     实现步骤:         1、读取excel,保存测试用例中
933. 最近的请求次数
写一个 RecentCounter 类来计算最近的请求。 它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。 返回从 3000 毫秒前到现在的 ping 数。 任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping。 保证每次对 ping 的调用都使用比之前更大的 t 值。   示例: 输入...
使用java(spring)编写ajax的接口如何返回给请求者数据
这几天写java(springboot)接口时想记录一下返回给前端接口数据的方式 public void myfunction(HttpServletRequest request,HttpServletResponse response){ String resultString = "我要输出的数据"; try { response.setContentType("text
python实现HTTP请求的接口测试
一直都是用jmeter进行接口测试,最近学习python,于是想尝试用python直接进行接口测试 一、python对于接口的请求方法为post请求API 二、和jmeter的post请求一样,需要有URL,json请求内容,请求头; headers={'Content-Type':'application/json;charset=UTF-8'} url1='http://www.bai
python使用http请求调用java接口或者类
java类 创建Servlet——在get或者post方法里面写需要调用的java接口或者类 打成war包后,放入tomcat目录下的webapps,启动tomcat 访问路径:localhost:8080/test1/TestServlet?docName=11111 页面输出11111/test1表示成功 python类: import requests if __name__=='__...
python开发一个接口(此处以django为例),供第三方访问
Python编写API接口要求通过http://172.17.37.62:8888/create_copy_task/?src=/mnt/source1/qin.txt&amp;amp;dst=/mnt/target1/qin.txt进行访问,参数src和dst分别代表源文件路径和目标端文件路径1.编写应用url:浏览器会自动将?后面识别为参数。urlpatterns = [ url(r'^cre...
Python脚本完成post接口测试
一个post类型的接口怎么编写脚本实现1、打开网页,在fiddler上获取到接口的URL2、有Python的requests库实现import requests new_url=&quot;http://10.31.143.2:8989/system/systemOrgan/list&quot; params = {&quot;access_token&quot;: &quot;807ad226-cbcc-4620-9544-8f53e1d51...
Java接口测试java代码
//1.新建一个客户端对象 CloseableHttpClient client=HttpClients.createDefault(); //2.使用URLBuilder工具类构造一个get类型的url,来设置协议的 URI url=new URIBuilder().setScheme("https")//设置接口使用的协议 .setHost("api.weixin.qq.com")//
python实现不断模拟客户端请求,实现压力测试
testVolumeClient.py import urllib2 url = 'http://localhost:8000' while True:     urlrequest = urllib2.Request(url)     urlresponse = urllib2.urlopen(urlrequest)     print urlresponse.read()
用java语言编写一个简单的接口请求,get和post
package com.lyl.interfaces; import java.net.URI; import java.util.ArrayList; import java.util.List; import org.testng.annotations.Test; import org.apache.http.HttpResponse; import org.apache.http.cl...
使用Python的requests库作接口测试——响应结果处理
在实际工作中,很多接口的响应都是json格式的数据,在测试中需要对其进行处理和分析。 设计到json数据处理的方法有两种:序列化和反序列化 python中序列化,简单讲就是将python的字典转换成json格式,以便进行储存或者传输; 反序列化,简单讲就是将json格式转换成python字典,用于对其进行分析和处理。 JSON和DICT格式互转方法: import json # 序列化
【原创】Postman 如何处理上一个接口返回值作为下一个接口入参?
今天做接口测试,有一个接口的参数是一个校验 token,会实时更新,开发提供了一个单独返回实时 token 的接口,所以就需要在功能接口使用时调用 token 接口的返回值,作为功能接口的参数来使用。 网上搜了一下,都没有现成的使用说明,刚才研究出来了,就记录下步骤,方便后面的同学。 如果返回 token 的接口的返回值,是标准的 JSON 格式的话,就很简单的两步就行了。 1.toke...
测试使用Timer定时调用http接口
1.编写Timer工具类 package com.hontye.parameter.util; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class Timer
Python实现爬取google翻译API结果
看了胖喵http://www.cnblogs.com/by-dream/p/6554340.html 的博文后,想参考着自己写一个,由于对js不是很熟悉,就直接在Python里利用pyexecjs库调用js来获取tk值,tkk的js获取代码自动网页爬取写入googletranslate.js,再调用大神写的googletranslate_1.js运算获取tk值 代码如下,打印结果来看运行的不错:
浅谈HTTP接口性能测试脚本的编写
我踩过的坑,希望你不要淌进来。
轮询接口进行消息提示
一、轮询服务启动 public class NewTaskService extends Service { public static final String ACTION = "com.dbjtech.myservice"; private Notification notification; private Notification.Builder builde
使用Java编写一个http请求,要求使用HttpClient
HttpClient介绍: HttpClient是Apache提供的一个用于在Java中处理HTTP请求、响应操作的工具,它比JDK中自带的URLConnection更加灵活好用,因此越来越多的人开始使用它来实行对HTTP的请求操作。HttpClient的初级使用我是在IDEA的编译工具上来实现基于HttpClient的HTTP请求实现。首先需要先创建一个Maven项目,并且添加相关的HttpC...
利用flask构造爬虫接口(python初级)
爬虫很多时候除了能够做成项目在服务器上跑以外,还可以做成接口的形式够其他语言调用,即爬虫可以实时的镶嵌到app,web或者其他场景下,当有客户调用时就会启动,无人调用时,就静静的待着。下面说一下利用python中的flask框架来写一个简单的爬虫来供其他语言调用。初级入门很简单的web框架和爬虫之间的结合应用。如果有其他的应用需求,请自行研究。 首先,导包不解释了,自行安装flask就可以了。 ...
使用Java写http的访问与请求
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; public class Http_1 {     public static void ma...
基于python3的一次简单的请求url接口返回json类型结果实例。
#-*- coding: UTF-8 -* from urllib import request import json import requests import os #获取每一页数据 def get_result_page(url): header = {'Accept-Charset': 'UTF-8', 'Accept': 'application/j...
python编写登录接口
python编写登录接口
python接口测试之路get、post、json请求处理
基于http协议,最常用的是GET和POST两种方法。 接口文档需要包含哪些信息: 接口名称 接口功能 接口地址 支持格式 json/xml 请求方式 请求示例 请求参数(是否必填、数据类型、传递参数格式) 返回参数说明 以典型的(一两个)参数做为判断是否请求通过(重点是看响应的信息判断) 一、GET 1 import requests 2 impo
python中编写request请求类
import requests#完成HTTP请求 class HttpRequest:#HttpRequest(url,param).http_request(method,cookies) def __init__(self,url,param): self.url=url self.param=param def http_request(s...
JMeter-实现将一个请求的结果作为另一个请求的参数
    Jmeter如何把上一个请求的结果作为下一个请求的参数呢?    Jmeter中的正则提取器能解决上述问题,正则提取器的具体使用请参看:https://blog.csdn.net/defonds/article/details/41476727    ...
循环请求接口,查询订单状态
-
selenium+robot接口测试:post返回结果取值
post请求的返回结果我们使用log ${addr.content}打印出结果,返回的结果一般为json格式的对象,需要转换为字典形式取值。 如返回结果为: { "message":"登录成功!", "status":"1", "data":"141403007d970100f5cb7bcb6d5048e6b1c0ab19500d41b2" } 方法一: ${data}
Charles做接口测试时怎么添加断言
断言 一般我们在url request中的Tests下可以增加如下各种断言判断,点击send后若是有报错的会直接提示具体是哪个字段错误 一:检查response的body中是否包含字符串 tests["测试点"] = responseBody.has("需要查找的字符串"); 注:当json中value为integer时,需要查找的值可以不带双引号, tests["x
利用postman 获取python 脚本。使用Python 执行接口测试
打开postman ,写好接口后。点击右侧的code .选择Python 选择requests ,页面会出现python的脚本。粘贴脚本,打开python 粘贴脚本直接运行,此时提示我没有安装requests 。第一步:找到 Python的安装目录。我的是在C:\Python27 进入 Scripts 目录。在文件位置栏输入cmd 进入doc 界面。输入 pip install requests ...
java请求第三方接口
最近工作遇到了一个需要请求第三方接口的项目,项目没有写好的框架,需要手写一个请求方法。code的时候发现一个身份验证的方法很常用,于是整理出了一个验证生成签名的方法,用作以后参考。
php调用Python接口的方法
最近因为公司用python做了一个根据cmpp2.0协议的短信接口,而我的任务就是用php的扩展去调用他,研究了很久,终于成功了,只有简短的两三行代码,这里我就把代码放出来,请各大拿多给点意见或是有更好的实现方式也欢迎,需要安装Python3以上版本。<?phpheader("content-type:text/html;charset=utf-8");$mobile = "手机号";$passo
python3使用flask编写注册post接口
使用python3的Flask库写了一个接口,封装了很多东西,仅供参考即可! 代码如下: #!/usr/bin/python3 # -*- coding: utf-8 -*- import re from flask import request from flask_restful import Resource import aes_utils import mysql_utils ...
小程序微信支付请求,java服务端接口编写
请求过程:  小程序端,先提交微信支付请求,服务端获取请求。然后再向微信发生支付请求,微信获取服务端提交的支付请求。根据api文档里的notify_url(设置接收反馈结果的路径)返回给服务端。服务器接收到微信端的结果之后,再把相应参数返回给小程序,小程序端再请调取微信支付接口,生成订单,最后客户完成支付。整个过程就是这样,下面贴出详细的代码; 小程序微信支付api文档 :https://p
jmeter添加http请求、java请求,将返回的json数据提取出来并将结果追加到一个文件
jmeter添加http请求、java请求,将返回的json数据提取出来并将结果追加到一个文件 抽奖活动返回的是json数据,所以需要先将返回的json字符串里面需要统计的字段提取出来,此处需要统计的是reward字段(reward即返回的奖品类型) 每个http请求都会返回一个reward,但jmeter一个文件只能保存一个结果,不能往结果中追加结果,如果要统计每个reward的类型
四、调用网上WS接口
---*以天气预报客户端查询为例*** 4.1 wsdl接口或文件生成 可根据具体需求自行百度免费webservice接口,此处使用网址;http://www.webxml.com.cn/zh_cn/index.aspx,天气接口可选择下载ws方法描述文件wsdl或者直接使用其提供的ws接口,此处以下载wsdl为例(后面会将以另一种方式演示实现):浏览器输入http://webservice.we
Java写一个接口(包括token),第三方调用
@RequestMapping(value = "/advertListAction", produces = "text/html;charset=UTF-8") @ResponseBody public String advertListAction(HttpServletRequest request, HttpServletResponse response) { JSONArra
在pycharm环境下使用Django写API接口
一直做安卓开发,经常和后端开发打交道,但对后端接口开发知之甚少。最近抽空学python,第一感觉就是简单易用。但是不实践一下也学不好。正好用Python和Django开发api,既巩固了python基础,也了解了后端的开发。 首先是安装环境:python3,pip3,还有pycharm和Django,Windows安装复杂些,有条件建议使用linux或mac系统,会省好多事。 其次pychar...
java代码实现访问网络外部接口并获取数据的工具类
java代码实现访问网络外部接口并获取数据的工具类 工具类代码,可以直接copy使用 package com.yqzj.util; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import java.io.BufferedInputStream; import java.io.BufferedOu
Python代码发送post请求接口测试
参考代码  # coding:utf-8 import requests url = &quot;https://passport.cnblogs.com/user/signin&quot; # 接口地址 # 消息头数据 headers = { 'Connection': 'keep-alive', 'Content-Length': '123', ...
在python中对一个类编写单元测试
类Dict在文件abstest.py中class Dict(dict): def __init__(self,**kw): super().__init__(**kw) def __getattr__(self,key): try: return self[key] except KeyError: raise AttributeError('Dict objec...
文章热词 Java 调参xgboost结果 tensorboard查看结果 逻辑回归阈值结果影响 Tensorboard参数结果的影响
相关热词 c# 请求java接口 c#请求接口 c#请求接口数据 用python写网络爬虫教程 怎样去学习python