关于HttpURLConection的POST请求乱码
    我在用HttpURLConection发送POST请求时,并未包含中文,但自己测试时收到的请求前面总是包含几个乱码,
    求高手解决!
    代码如下:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpUtil {

/**
 * 发送http POST请求
 * @param httpUrl  请求URL
 * @param httpContext 请求报文主体内容
 * @return
 * @throws IOException
 */
    public static String sendPost(String httpUrl,String httpContext) throws IOException{
        URL url = new URL(httpUrl);
        HttpURLConnection connection = (HttpURLConnection)url.openConnection();
        connection.setRequestMethod("POST");
        // 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true,默认情况下是false;   
        connection.setDoOutput(true);   
        connection.setRequestProperty("Content-Type","application/json; encoding=utf-8");
        connection.setRequestProperty("Connection", "keep-alive");


        OutputStream out = connection.getOutputStream();
        // 现在通过输出流对象构建对象输出流对象,以实现输出可序列化的对象。   
         ObjectOutputStream objOut = new ObjectOutputStream(out);   
         objOut.writeObject(httpContext);  // 向对象输出流写出数据,这些数据将存到内存缓冲区中
         out.close();
         objOut.close(); // 关闭对象输出流

         InputStream in = connection.getInputStream();
         InputStreamReader inr = new InputStreamReader(in);
         BufferedReader reader = new BufferedReader(inr);
         StringBuffer result = new StringBuffer();
         String temp;
         while((temp = reader.readLine()) != null){
             result.append(temp);
         }
         in.close();
         return result.toString();
    }

}图片说明

5个回答

你看你项目的编码什么编码。 这个很明显的。编码问题。一个一个排查。又没有几个。

你这边应该没问题,查一下服务端。

不是设置connection的编码,而是你获取响应流时读取InputStream的时候需要指定编码格式跟发送端的编码格式一致才行。
主要就是BufferedReader 读取响应流的代码,修正如下试试:

         InputStream in = connection.getInputStream();
         InputStreamReader inr = new InputStreamReader(in,"UTF-8");

指定编码格式跟发送端保持一致,其次,保证Eclipse工作空间的编码格式显示也是UTF-8或者GBK,就是需要数据发送编码格式,你读取数据的编码格式,Eclipse开发环境显示编码格式都一致。
耐心改改试试。

wojiushiwo945you
毕小宝 回复毕小宝: 这个InputStreamReader的默认编码就是UTF-8的.
3 年多之前 回复
wojiushiwo945you
毕小宝 先改成gbk试试,可能发送端的数据是GBK的。
3 年多之前 回复

你可以试试OKHttp或者Volley

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ajax post 请求乱码
项目总体编码都为:GBK 过滤器JAVA代码 [code="java"] package com.sunstar.sos.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterCo...
post请求乱码
tomcat默认编码格式是iso-8859-1,前台传来的数据会产生乱码,解决方法: String xxx = new String(xxx.getBytes("iso-8859-1"), "utf-8"); // 长期更新,一直跟乱码做斗争 ...
php post请求乱码的问题
使用最土模板里的post请求源码如下rn[code=php]rn static public function DoPost($url,$post_data=array())rn $url2 = parse_url($url);rn $url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]);rn $url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]);rn $host_ip = @gethostbyname($url2["host"]);rn $fsock_timeout = 2; //2 secondrn if(($fsock = fsockopen($host_ip, $url2['port'], $errno, $errstr, $fsock_timeout)) < 0)rn return false;rn rn $request = $url2["path"].($url2["query"] ? "?" . $url2["query"] : "");rn $post_data2 = http_build_query($post_data);rn $post_data2=urldecode($post_data2);rn $in = "POST " . $request . " HTTP/1.0\r\n";rn $in .= "Accept: */*\r\n";rn $in .= "Host: " . $url2["host"] . "\r\n";rn $in .= "User-Agent: Lowell-Agent\r\n";rn $in .= "Content-type: application/x-www-form-urlencoded\r\n";rn $in .= "Content-Length: " . strlen($post_data2) . "\r\n";rn $in .= "Connection: Close\r\n\r\n";rn $in .= $post_data2 . "\r\n\r\n";rn unset($post_data2);rn if(!@fwrite($fsock, $in, strlen($in)))rn fclose($fsock);rn return false;rn rn return self::GetHttpContent($fsock);rn rnrn static private function GetHttpContent($fsock=null) rn $out = null;rn while($buff = @fgets($fsock, 2048))rn $out .= $buff;rn rn fclose($fsock);rn $pos = strpos($out, "\r\n\r\n");rn $head = substr($out, 0, $pos); //http headrn $status = substr($head, 0, strpos($head, "\r\n")); //http status linern $body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page bodyrn if(preg_match("/^HTTP\/\d\.\d\s([\d]+)\s.*$/", $status, $matches))rn if(intval($matches[1]) / 100 == 2)rn return $body; rn elsern return false;rn rn elsern return false;rn rn rn[/code]rn实现的是http短信发送 因为运营商没有urldecode 我这里只能想到参数原文字请求 发送到手机的短信是乱码的本人接触php也不久 想请教下各位 有没有什么办法 能解决乱码问题。rn可不可以通过其他方式请求http。
java post请求出现乱码
用户在添加详细地址时偶尔会出现乱码现象,主要是是空格字符成方框或是问号,出现率大约是1%,页面到后台、web.xml配置文件全部都已统一了编码为UTF-8。本人摸拟调试也没发现此乱码现象,但一段时间之后就会出现个别用户填写的地址就出现乱码,不知道大家有没有遇到,求解。
ajax post请求,后台乱码
界面的所有编码都是GBK,ajax post请求需要设置 xmlhttp.setRequestHeader(&quot;content-type&quot;,&quot;application/x-www-form-urlencoded&quot;); 后台接收需要用UTF-8,request.setCharacterEncoding(&quot;UTF-8&quot;);...
SpringMVC解决POST请求乱码
在web.xml配置文件中添加spring自带的Filter设置编码格式 &lt;filter&gt; &lt;filter-name&gt;characterEncodingFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&l...
关于get请求乱码而post方式不会乱码详解
1.post请求为什么不会乱码? jsp页面有pageEncoding=&quot;UTF-8&quot;,进行编码设置,服务端web.xml中有过滤器 org.springframework.web.filter.CharacterEncodingFilter进行request.setCharacterEncoding(&quot;utf-8&quot;)操作, 故在服务端获取的参数不会乱码。   2.get请求为什么会乱...
关于post请求与get请求
面试的时候被问到post请求与get请求的区别。讲真,这个平时还真没怎么注意。然后查了一下,总结如下: 定义: get:查询字符串的参数(key/value)放在请求的url中。post:请求参数放在请求体中! get post 数据长度的限制 url的最大长度2048个字符 没有限制 应用场合 查询数据 修改数据 历史 参数会保留在...
关于post请求之我见
        近来仔细研究了一下常见的post请求的方式,对照,前端ajax发送post请求、使用postman工具发送post请求,以及后端接收请求的方式,把自己的感想记录下来,请大家批评指正。        一、首先记录一下前端ajax发送请求与postman之间的对照。 1、第一种形式的postman请求 其对应的前端代码: 前端ajax的写法 2、第二种形式的pos...
关于Post请求 csharp
using System;rnusing System.Text;rnusing System.IO;rnusing System.Net;rnusing System.Text.RegularExpressions;rnrnusing Boolue.Real;rnrnnamespace Cityrnrn public class CCityrn rn static string CurrentURL;rnrn public CCity()rn rn CurrentURL = "";rn rnrn public string GetHtml(string Url)rn rn CurrentURL = Url;rn string Html = RealPage.Get(Url);rn if (Html.Length == 0)rn rn throw new Exception();rn rn return Html;rn rnrn public PostSection[] GetSection(string html)rn rn ProvideRegex PR = new ProvideRegex();rn Regex ReList = new Regex(PR.SectionList);rn Match MCList = ReList.Match(html);rn string StrResults = MCList.Groups[1].Value.Trim();rn if (StrResults.Length != 0)rn rn Regex ReItem = new Regex(PR.SectionItem);rn MatchCollection McItem = ReItem.Matches(StrResults);rn int Count = McItem.Count;rn if (Count != 0)rn rn PostSection[] Section = new PostSection[Count];rn for (int i = 0; i < Count; i++)rn rn Section[i] = new PostSection();rn Match MItem = McItem[i];rn Section[i].Option = Convert.ToInt32(Regex.Replace(MItem.Groups[1].Value.Trim(), @"[^0-9]", ""));rn Section[i].Name = MItem.Groups[2].Value.Trim();rn rn return Section;rn rn elsern rn throw new Exception();rn rn rn elsern rn throw new Exception();rn rn rnrn public string GetSubSection(int Section)rn rn string html = PostData(Section);rn return html;//由于Post方法发送不起作用,所以暂时返回原代码先。如果Post请求成功,那么得到请求成功后的源代码,进行分析.rn rnrnrn private string PostData(int NameId)//由于是下拉框,所以不知道是option里面的value还是text...一个一个测试,根据areaid所以暂时先测试valuern rn string Html = "";rn byte[] PostData = Encoding.Default.GetBytes("areaid=" + NameId + "&garden=");rn HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(CurrentURL);rn Request.Method = "POST";rn Request.ContentLength = PostData.Length;rn Request.ContentType = "multipart/form-data";rn using (Stream Sm = Request.GetRequestStream())rn rn Sm.Write(PostData, 0, PostData.Length);rn Sm.Close();rn rn using (Stream Sm = Request.GetResponse().GetResponseStream())rn rn using (StreamReader Sr = new StreamReader(Sm, Encoding.Default))rn rn Html = Sr.ReadToEnd();rn Sr.Close();rn Sm.Close();rn rn rn return Html;rn rn rnrn class ProvideRegexrn rn public string SectionList = @"name=""areaid"">(.*?)";rn public string SectionItem = @"(.*?)
关于Http的Post请求···
怎么用Js向服务器发送Post请求?rn.net的服务端又如何处理Post请求?rn不解,求教
请教:关于POST请求
[code=C/C++] char* req="POST /firstisapi/firstisapi.dll HTTP/1.0\r\n" rn "From: local\r\n" rn "User-Agent: post_test/1.0\r\n" rn "Content-Type: application/x-www-form-urlencoded\r\n" rn "Content-Length: 20\r\n\r\n" rn "?GetSubStruValue&a=12&b=3";rn [/code]rn这是我的POST请求 格式对吗?rn页面是:http://192.168.10.171/firstisapi/firstisapi.dllrn在浏览器里是这样调用的:http://192.168.10.171/firstisapi/firstisapi.dll?GetSubStruValue&a=12&b=3rn
关于get和post请求
get请求和post请求的区别: 安全性:get请求的信息在请求头中保存 在网页的地址栏中可以看见 post请求的信息是封装在请求体内 在发送的过程中对 用户不可见 效率问题:get请求的传递速度是比post请求快的 传输数据量:get请求的数据在URL中存储 传输的数据量有限 post请求的信息在请求体中保存 数据量不做限制 传输数据类型...
关于HTTP post请求
这个是url地址 只能post访问:rnhttp://192.168.10.206:808/api/Token/EncryptRequestToken?appKey=12345678&appSecret=C5C5AF0C419445C16D214638358AB0C9FA7F36B1DEAEDF8B&returnUrl=AnayAuthenticate&timeStamp=2014-06-11 10:21&expiresTime=2014-06-11 10:21&seed=&machineId=852654235rnrn全部都是url地址哈 后面的不是什么参数哈。参数是没有的,做了一天了实在是弄不出来,求解啊
关于retrofit的Post请求
首先网上的讲解一大堆,这里只是自己当时的问题,或者是接口的问题,现在吧写出来,为了下次使用 为嘛的接口是 http:xxxxx /xxx/xxx 然后需要是post请求 方式是 {“dev”:”xxxxxooooo”} 自己找了一大堆,最后解决ok,下面代码 BASE_URL = "https://xxxxxx.xxx/xxxx/";//http服务接口 public interface Api
Web请求方式及get和post请求区别 请求乱码
(一)get请求: 1.特点:采用URL传递数据,即浏览器会将要传递的数据附加在URL上传给服务器数据在传递的过程中可见,保密性差 --传递的数据大小受限,很小通常2k。 2. 哪一些情况下,浏览器会发送get请求1.直接输入某个地址2.点击链接3.表单默认提交的方式 3. 何时用:get:在浏览器向服务器索取(查询)数据时。 (二)post 1. 特点:特点会将请求参数添加到实体内容里面,...
解决全站post get请求乱码
解决乱码,我们当然是可以在每个Servlet中解决对应的乱码问题,但在实际web开发中,web应用的逻辑比较复杂,上述解决乱码的方式太过于复杂,代码重复性太高。所以为了解决该问题,以下引入了过滤器来解决这个问题自定义一个Filter的实现类,在doFilter方法中 定义一个MyRequest类解决全站乱码【重写获取用户数据的三个getParameter方法,对于getParameterMap方法...
retrofit2 POST请求体乱码终极解决
网络上处理办法较多的 如: http://blog.csdn.net/iromkoear/article/details/74295650 [属于避开被编码] 1.出现问题:如下发起网络请求,服务端收到内容会乱码。 2.解决办法如下 : 添加一个注解 或者 代码配置: 这里为了更快解决问题直接添加一个注解,推荐代码配置 @Headers("Content-Ty
httpclient4 post提交请求乱码问题解决
第一种: HttpPost post=new HttpPost(url); StringEntity content=new StringEntity(data, Charset.forName("utf-8"));// 设置编码 content.setContentType("application/json; charset=UTF-8"); content.setContentEnc
Java post请求以及响应乱码的解决
public static String sendPost(String url, String param) throws Exception{                  BufferedReader in = null;         String result = ""; //        try {             URL realUrl = new URL(
http post请求输出到浏览器乱码
post  请求out.print打印到浏览器乱码,而控制台输出没问题,主要的原因是浏览器和服务器的编码不一样。在网上查了一下可能需要用到filter过滤器什么的,不需要可以将编码都设为utf-8  利用流PrintWriter out=response.getWriter();但是必须在这一行代码之前加入response.setCharacterEncoding(&quot;utf-8&quot;);       ...
小程序post请求乱码记录
小程序请求1, //后面要加charset=utf-8 header: { 'content-type': 'application/x-www-form-urlencoded;charset=utf-8', }2,如果设置content-type: application/x-www-form-urlencoded ,微信默认会为键值对进行Url编码,也就是说微
Java HttpClient Post请求发送数据乱码
描述:Web 客户端,利用 HttpClient 调用银行接口,银行的要求是:以 GBK 格式发送报文。         情况:本地不管怎样调整编码格式,银行端接收到的中文总是处于乱码状态(英文和数字不乱码)。         经过大量的资料查询,找到一些比较有用的资料。比如:这里         由于调用银行接口,对于 IP 地址有限制,故本机并没有办法直接调用,必须要发送到服务器
采集之页面乱码及Curl模拟post请求
采集的时候页面乱码 页面转码 Curl模拟post请求 模拟浏览器
Jeesite中解决GET请求及POST乱码
我们在使用jeesite进行开发的时候,在CMS中的评论管理中后发现乱码问题,这个乱码是由于GET请求传递中文造成的,我们的解决方案是自定义编码过滤器解决。 相应的代码如下: package com.thinkgem.jeesite.common.filter; import java.io.IOException; import java.io.UnsupportedEncodingExc
get请求和post请求乱码分析
针对get 请求和post请求乱码分析:如果是get请求,服务器是由tomcat默认的编码格式,或者你设定的编码格式去重新编码,也就是说,这个编码是由tomcat容器完成的。至于tomcat 是用那种编码,分情况1>.如果是tomcat7 以及以下版本,默认的编码格式是ISO- 8859-1,如果想改变默认的编码格式,在tomcat/conf/server.xml里面,修改为<Connector
struts2 + prototype.js ajax post请求出现乱码
struts2 + prototype.js ajax post请求出现乱码rn我要是在url 中加入参数的话就不会出现乱码,但是我要是这样用的话parameters: Form.serialize(form)就会出现乱码,我的 tomcat的配置配了URIEncoding="gbk"我的struts2的配置也配为gbk,求高手解决!
web.xml文件解决post请求乱码配置
CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 CharacterEncodingFilter /*
jsp中post方式请求乱码
jsp中post方式请求一般不会乱码,如果乱码加上这句: 解决办法一 request.setCharacterEncoding(&quot;utf-8&quot;); 而get方式请求,若url含非西欧编码必然会乱码,处理方式: request.setCharacterEncoding(&quot;utf-8&quot;); //将请求参数使用ISO-8859-1分解成字节数组,再将字节数组解码成字符串 ...
POST乱码与GET乱码
只需在web.xml文件配置如下代码: <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true<
关于ajax中post请求 与 jquery中的post请求
ajax post请求可正常运行rn$.ajax(rn type: "Post",rn url: "SurveyDetail.aspx/ViewAnswer",rn contentType: "application/json; charset=utf-8",rn dataType: "json",rn data: " 'surveyId': '" + surveyId + "', 'questionId': '" + questionId + "' ",rn success: function (data) rn $("#result").html(data.d);rn ,rn error: function (err) rn //alert(err.responseText);rn return;rn rn );rn我想简化代码,然后想使用jquery中的post,[b]但是这样运行失败[/b]rn$.post("~/Administrator/survey/SurveyDetail.aspx/ViewAnswer", " 'surveyId': '" + surveyId + "', 'questionId': '" + questionId + "' ", function (data) rn alert(data);rn //$("#result").html(data);rn ,"json");rnrn请大家帮忙看下,谁遇到过这种问题,怎么解决啊 ?! 赞美好人。。。
java关于post请求与get请求
代码如下: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java
Java Web乱码分析及解决方案(二)——POST请求乱码
引言     GET请求的本质表现是将请求参数放在URL地址栏中,form表单的Method为GET的情况,参数会被浏览器默认编码,所以乱码处理方案是一样的。对于POST请求乱码,解决起来要比GET简单,我们关心的重点是在Request Body中。 请求乱码——Method方式     使用Method方式发送HTTP请求时,根据HTTP协议的规定,查询参数应该在Request的B
post请求与get请求
一.使用HttpURLConnection提交数据 "get"请求 代码: String path = "http://地址?数据1名字=" + URLEncoder.encode(数据1,"utf-8") + "&数据2名字=" +URLEncoder.encode(数据2,"utf-8"); URL url = new URL(path); HttpURLConn
GET请求与POST请求
get请求 post请求 区别:get是用来获取数据的,而post是用来发送数据的
GET请求不乱码,Ajax请求POST乱码问题
      在写公众号界面前后端交互的时候,使用jq向后台controller进行传值。然而去看数据库保存的值==,全是ISO8859-1。然后就开始一个一个测试、比对,从前端界面编码,再到f12,后端编码,甚至于xml配置、tomcat编码全部检查了一遍。可能本人前端还是很渣,对于请求理解不够,足足折磨了两天,最终还是一个网上认识的大牛给我远程解决的。在此,我也感谢帮助过我的人,看来IT圈中是...
get请求与post请求
㈠ get请求方式的特点     ① 会将请求参数添加到请求资源路径的后面,因为请求行最多只能存放大约2K左右的数据,所以,只能够提交少量的数据。       ② get请求会将请求参数显示在浏览器地址栏,不安全(路由器会记录这些地址)。   ㈡ post请求方式的特点     ① 会将请求参数添加到实体内容里面,可以提交大量的数据。       ② post请求不会将请求参数显示
关于HttpURLConnection发送Post请求
我写了如下一段代码:rnrn try rn String s="username=admin&password=123";rn URL url=new URL("http://127.0.0.1:8080/myweb/servlet/Mytest");rn HttpURLConnection httpurlconnection = null;rn httpurlconnection = (HttpURLConnection)url.openConnection();rn rn httpurlconnection.setUseCaches(false);rn httpurlconnection.setDefaultUseCaches(false);rn httpurlconnection.setDoOutput(true);rn httpurlconnection.setDoInput(true);rn httpurlconnection.setRequestMethod("POST");rn httpurlconnection.setRequestProperty("Accept", "text/html");rn httpurlconnection.setRequestProperty("Content-type", "text/html");rn httpurlconnection.setRequestProperty("Connection", "close");rn httpurlconnection.setRequestProperty("Content-Length", String.valueOf(s.length()));rn /**/rn OutputStream outputstream = httpurlconnection.getOutputStream();rn outputstream.write(s.getBytes());rn outputstream.flush();rn rn int code = httpurlconnection.getResponseCode();rn if(code != HttpURLConnection.HTTP_OK )rn rn System.out.println("error code "+ code);rn rn rn elsern rn System.out.println("ok");rn rn rn rn rn catch(Exception e)e.printStackTrace(); rn rn rn rnrn执行没有问题,但是在servlet"http://127.0.0.1:8080/myweb/servlet/Mytest"中,request.getParameter("username")却是null.不知道为什么,请帮小弟看看
关于Post请求 http响应的问题?
_url = $url; rn rn /** rn * 设置url rn * rn */ rn public function setURL($url = '') rn $this->_url = $url; rn rn /** rn * 设置请求超时时间 rn * rn */ rn public function setTimeOut($timeout = 10) rn $this->_time_out = $timeout; rn rn /** rn * 重置 rn * rn */ rn public function clear() rn $this->_url = ""; rn $this->_params = ""; rn $this->_headers = ""; rn $this->err_no = ""; rn $this->err_str = ""; rn rn /** rn * 添加header rn * @$str_header rn */ rn public function addHeader($str_header) rn $this->_headers .= $str_header ."\n"; rn rn /** rn * 设置header rn * @$str_header rn */ rn public function setHeader($str_header) rn $this->_headers = $str_header ."\n"; rn rn /** rn * 添加get参数 rn * @$arrParam :参数数组 rn */ rn public function addGetParam($arrParam) rn $this->_url .= strpos($this->_url,'?') === false?'?':'&'; rn $this->_url .= http_build_query($arrParam); rn rn /** rn * 添加post参数 rn * @$arrParam :参数数组 rn */ rn public function addPostParam($arrParam) rn $this->_params .= strlen($this->_params) > 0?'&':''; rn $this->_params .= http_build_query($arrParam); rn rn /** rn * 重新添加post参数 rn * @$arrParam :参数数组 rn */ rn public function setPostParam($arrParam) rn $this->_params = http_build_query($arrParam); rn rn /** rn * get方法 rn * 说明:资源不存在时将返回空 rn */ rn public function gets() rn return $this->_request("GET"); rn rn /** rn * post方法 rn * 说明:资源不存在时将返回空 rn */ rn public function posts() rn return $this->_request("POST"); rn rn /** rn * getResponse方法 rn * 说明:获取响应信息 rn * @$item = [header | content] rn */ rn public function getResponse($item = "") rn return $item == ""?$this->_response:$this->_response[$item]; rn rn /** rn * getContent方法 rn * 说明:获取响应内容,简化getResponse rn */ rn public function getContent() rn return $this->_response['content']; rn rn /** rn * getVersion方法 rn * 说明:获取响应内容,简化getResponse rn */ rn public function getVersion() rn return $this->_version; rn rn /** rn * 只检查post方法是否出错 rn * rn */ rn public function is_error() rn return $this->err_no; rn rn /** rn * 返回出错信息 rn * rn */ rn public function get_error() rn return $this->err_str; rn rnrn //=====私有方法===== rnrn private function _parse_url() rn $arr_url = parse_url($this->_url); rn if(!is_array($arr_url)) rn $arr_url = array(); rn rn $this->_host = $arr_url['host']; rn $this->_port = isset($arr_url['port'])?$arr_url['port']:'80'; rn $this->_path = $arr_url['path']; rn $this->_query = $arr_url['query']; rn rn /** rn * request方法 rn * 说明:资源不存在时将返回空 rn */ rn private function _request($method = "GET") rn $this->_parse_url(); rn $fp = @fsockopen($this->_host,$this->_port,$this->err_no,$this->err_str,$this->_time_out); rnrn if(!$fp) rn return false; rn else rn $request = ''; rn $request .= sprintf("%s %s%s%s HTTP/1.0\n", $method, $this->_path, $this->_query ? "?" : "", $this->_query); rn $request .= "Host: ".$this->_host."\n"; rn $request .= $this->_headers; rn $request .= $method == "POST"?"Content-type: application/x-www-form-urlencoded\n":""; rn $request .= $method == "POST"?"Content-length: ". strlen($this->_params) ."\n":""; rn $request .= "Connection: close\n"; rnrn $request .= $method == "POST"?"\n$this->_params\n":"";rnrn $request .= "\n"; rn //echo $request;//exit; rnrn fputs($fp,$request); rn //获得请求后返回的内容 rnrnrn $results = ""; rnrn while(!feof($fp)) rn $line = fgets($fp,1024); rn $results .= $line; rn rn fclose($fp); rn $this->_response['header'] = substr($results,0,strpos($results,"\r\n\r\n")+1); //相应的头信息 rnrn $this->_response['content'] = substr($results,strpos($results,"\r\n\r\n")+4); //去掉请求返回的头部 rnrn return true; rn rn rn
关于jquery post请求服务器问题
一个按钮有个点击事件,这个点击事件是 访问服务器的,怎样把这个访问已post形式提交。n其中 jquery API 的post提交例子是这样子的:n$.post("test.cgi", name: "John", time: "2pm" ,n function(data)n alert("Data Loaded: " + data);n );n n 这样子可以访问到服务器,但是是以ajax方式,respond返回的是整个页面的代码,不能跳转页面。n n后来我用了javascript的方式来触发一个按钮事件:nwindow.location.href="访问路径";n但是这个方法是以get方式访问的。nn问:在不用表单提交的情况下,和不用ajax的情况下,如何用以post方式访问服务器?n或者用ajax访问也行,但是ajax怎样跳转页面啊?ajax只能接收服务器返回来的文本,在服务器做跳转的话,打开浏览器调试那个respond是返回整个页面代码的。nn求大神指导下。不胜感激。
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池