问题:
在调试 kill 接口的时候,对方的服务用的是 Django RestFramework 框架提供的接口,用 python 请求时得到的内容如下:
➜ ~ python3 test.py
<Response [200]> "true" // 对应的代码是 print(response, response.text)
➜ ~
用 Java 请求时,得到的response 内容是 html 格式的字符串如下:
<!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="robots" content="NONE,NOARCHIVE" /> <title>Api Kill Session View Outer – Django REST framework</title> <link rel="stylesheet" type="text/css" href="/static/rest_framework/css/bootstrap.min.css"/> <link rel="stylesheet" type="text/css" href="/static/rest_framework/css/bootstrap-tweaks.css"/> <link rel="stylesheet" type="text/css" href="/static/rest_framework/css/prettify.css"/> <link rel="stylesheet" type="text/css" href="/static/rest_framework/css/default.css"/> </head> <body class=""> <div class="wrapper"> <div class="navbar navbar-static-top navbar-inverse" role="navigation" aria-label="navbar"> <div class="container"> <span> <a class='navbar-brand' rel="nofollow" href='https://www.django-rest-framework.org/'> Django REST framework </a> </span> <ul class="nav navbar-nav pull-right"> </ul> </div> </div> <div class="container"> <ul class="breadcrumb"> <li class="active"><a href="/cleverdb/kill_session_outer/">Api Kill Session View Outer</a></li> </ul> <!-- Content --> <div id="content" role="main" aria-label="content"> <div class="region" aria-label="request form"> <form class="button-form" action="/cleverdb/kill_session_outer/" data-method="OPTIONS"> <button class="btn btn-primary js-tooltip" title="Make an OPTIONS request on the Api Kill Session View Outer resource">OPTIONS</button> </form> </div> <div class="content-main" role="main" aria-label="main content"> <div class="page-header"> <h1>Api Kill Session View Outer</h1> </div> <div style="float:left"> <p></p> </div> <div class="request-info" style="clear: both" aria-label="request info"> <pre class="prettyprint"><b>POST</b> /cleverdb/kill_session_outer/</pre> </div> <div class="response-info" aria-label="response info"> <pre class="prettyprint"><span class="meta nocode"><b>HTTP 200 OK</b><b>Allow:</b> <span class="lit">POST, OPTIONS</span><b>Content-Type:</b> <span class="lit">application/json</span><b>Vary:</b> <span class="lit">Accept</span></span>"true"</pre> </div> </div> <div > <div class="well tab-content"> <div id="post-generic-content-form"> <form action="/cleverdb/kill_session_outer/" method="POST" class="form-horizontal"> <fieldset> <div class="form-group"> <label for="id__content_type" class="col-sm-2 control-label">Media type:</label> <div class="col-sm-10"> <select name="_content_type" data-override="content-type" id="id__content_type" class="form-control"> <option value="application/json" selected>application/json</option> <option value="application/x-www-form-urlencoded">application/x-www-form-urlencoded</option> <option value="multipart/form-data">multipart/form-data</option></select> <span class="help-block"></span> </div> </div> <div class="form-group"> <label for="id__content" class="col-sm-2 control-label">Content:</label> <div class="col-sm-10"> <textarea name="_content" cols="40" rows="10" data-override="content" id="id__content" class="form-control"></textarea> <span class="help-block"></span> </div> </div> <div class="form-actions"> <button class="btn btn-primary js-tooltip" title="Make a POST request on the Api Kill Session View Outer resource">POST</button> </div> </fieldset> </form> </div> </div> </div> </div><!-- /.content --> </div><!-- /.container --> </div><!-- ./wrapper --> <script> window.drf = { csrfHeaderName: "X-CSRFTOKEN", csrfToken: "UTWfNXFtkvK22TARPKMKseWa1XQfiO8pjSAIq1n0cLxk0X4AyquXToGSpgGPatXe" }; </script> <script src="/static/rest_framework/js/jquery-3.4.1.min.js"></script> <script src="/static/rest_framework/js/ajax-form.js"></script> <script src="/static/rest_framework/js/csrf.js"></script> <script src="/static/rest_framework/js/bootstrap.min.js"></script> <script src="/static/rest_framework/js/prettify-min.js"></script> <script src="/static/rest_framework/js/default.js"></script> <script> $(document).ready(function() { $('form').ajaxForm(); }); </script> </body> </html>
方案
后来经过分析:增加如下设置就好了,
httpURLConnection.setRequestProperty(“Accept”, “application/json”);
该值默认是 text/html