C# Http 服务器get pos 请求 获取头信息 iOS 客户端联调
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using UnityEngine;
public class TestServerHttp : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
ListenAsync();
} private HttpListener listener;
// Update is called once per frame
async void ListenAsync()
{
try
{
IPHostEntry ipEntry = Dns.GetHostEntry(Dns.GetHostName());
string localIp = "";
foreach (var ip in ipEntry.AddressList)
{
Debug.Log("IP Address: " + ip.ToString());
localIp = ip.ToString();
}
listener = new HttpListener();
//string url1 = string.Format($"http://{localIp}:51111/MyApp/");
string url2 = string.Format($"http://{localIp}:51111/MyApp/aa/");
string url3 = string.Format($"http://{localIp}:51111/MyApp/bb/");
Debug.Log("IP url: " + url2);
listener.Prefixes.Add(url2);
listener.Prefixes.Add(url2);
listener.Prefixes.Add(url3);
//listener.Prefixes.Add("http://localhost}:51111/wangermazi/");
listener.Start();
while (true)
{
HttpListenerContext context = await listener.GetContextAsync();
Dictionary<string, object> res = new Dictionary<string, object>();
res["succ"] = true;
res["content"] = "hah";
var item = MiniJSON.Json.Serialize(res);
Debug.Log(item);
//string msg = "You asked for: " + context.Request.RawUrl + Time.realtimeSinceStartup;
var msg = item;
context.Response.ContentLength64 = Encoding.UTF8.GetByteCount(msg);
context.Response.StatusCode = (int)HttpStatusCode.OK;
Debug.Log(context.Request.Url + " " + context.Request.RemoteEndPoint.Address);
Debug.Log("HttpMethod" + context.Request.HttpMethod);
if (context.Request.HasEntityBody)
{
Stream SourceStream = context.Request.InputStream;
byte[] currentChunk = ReadLineAsBytes(SourceStream);
//获取数据中有空白符需要去掉,输出的就是post请求的参数字符串 如:username=linezero
var length = context.Request.Headers["Content-Length"];
//var temp = Encoding.Default.GetString(currentChunk,0,int.Parse(length));
var temp = ReadString(context);
//byte last = currentChunk[int.Parse(length) + 1];
//Debug.Log("---" + currentChunk.Length);
Debug.Log("---" + length);
//Debug.Log("---" + last);
Debug.Log("temp" + temp);
byte[] buffer = new byte[1];
Debug.Log("buffer" + buffer[0]);
}
Debug.Log("QueryString " + context.Request.QueryString);
Debug.Log("name " + context.Request.QueryString["name"]);
Debug.Log("City " + context.Request.Headers["City"]);
using (Stream s = context.Response.OutputStream)
{
using (StreamWriter writer = new StreamWriter(s))
{
await writer.WriteAsync(msg);
}
}
}
}
catch (Exception e)
{
Debug.Log("ListenAsync: " + e);
listener.Stop();
} //
} private void OnDestroy()
{
if (listener != null)
{
listener.Stop();
}
} static byte[] ReadLineAsBytes(Stream SourceStream)
{
var resultStream = new MemoryStream();
while (true)
{
int data = SourceStream.ReadByte();
if (data > 0)
{
resultStream.WriteByte((byte)data);
}
else
{
break;
}
}
resultStream.Position = 0;
byte[] dataBytes = new byte[resultStream.Length];
resultStream.Read(dataBytes, 0, dataBytes.Length);
return dataBytes;
} static string ReadString(HttpListenerContext context)
{
using (Stream inputStream = context.Request.InputStream)
using (StreamReader reader = new StreamReader(inputStream))
{
string json = reader.ReadToEnd();
return json;
}
}
}
iOS 代码
-(void)httGetSync{
NSString *urlString = @"http://192.168.6.31:51111/MyApp/?name=wangwu";
//NSCharacterSet *customAllowedSet = NSCharacterSet(charactersInString:"`#%^{}\"[]|\\<> ").invertedSet;
//NSCharacterSet *customAllowedSet = [[NSCharacterSet characterSetWithCharactersInString:@"!$&'()*+-./:;=?@_~%#[]"] invertedSet];
NSCharacterSet *customAllowedSet = [NSCharacterSet URLQueryAllowedCharacterSet];
NSString *urlstr = [urlString stringByAddingPercentEncodingWithAllowedCharacters:customAllowedSet];
NSURL *url = [NSURL URLWithString:urlstr];
NSLog(@"%@",url);
//NSURLRequest *req = [[NSURLRequest alloc] initWithURL:url];
NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:url];
[req setHTTPMethod:@"GET"];
NSString *getString = @"";
NSData *getdata = [getString dataUsingEncoding:NSUTF8StringEncoding];
[req setValue:@"wangermazi" forHTTPHeaderField:@"City"];
NSLog(@"Curr thread %@",[NSThread currentThread]);
NSURLSession *shareSession = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [shareSession dataTaskWithRequest:req completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if(data && error == nil){
NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
NSLog(@"Curr thread %@",[NSThread currentThread]);
}
}];
[dataTask resume];
}
-(void)httpPostSync11{
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://192.168.6.31:51111/MyApp/"]];
//[request setHTTPMethod:@"GET"];
[request setHTTPMethod:@"POST"];
NSString* postString = [NSString stringWithFormat:@"n=%@&c=%@", @"w" ,@"b"];
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
//NSData *poData = [postString dataUsingEncoding:NSUTF8StringEncoding]
//[request setHTTPBody:poData];
NSURLSession *shareSession = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [shareSession dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if(data && error == nil){
NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
}
}];
[dataTask resume];
}
C# Http 服务器get pos 请求 获取头信息 iOS 客户端联调的更多相关文章
- HTTP请求响应头信息
HTTP请求响应头信息 请求:(request) 组成部分: 请求行 请求头 请求体 请求行:请求信息的第一行 格式:请求方式 访问的资源 协议/版本 例如:GET /day0801/1.html H ...
- wget/curl查看请求响应头信息
wget / curl 是两个比较方便的测试http功能的命令行工具,大多数情况下,测试http功能主要是查看请求响应 头信息 ,而给这两个工具加上适当的命令行参数即可轻易做到,其实查man手册就能找 ...
- nodejs向远程服务器发送post请求----融云Web SDK/客户端获取token
最近要用到一个叫融云的及时通讯的SDK,在获取token这个步骤的时候有点卡顿,以防以后碰到类似的问题,再此记录一下. 客户端通过融云 SDK 每次连接服务器时,都需要向服务器提供 Token,以便验 ...
- nginx log记录请求的头信息
记录访问的log,为了在出现特殊情况时,方便检查出现问题的地方.log_format accesslog ‘$remote_addr – $remote_user [$time_local] “$re ...
- js获取设备公网ip + 服务器根据公网ip 获取IP信息
1.前言 本来呢,想实现js定位功能,最少定位到城市,一开始,使用的是搜狐的api直接获取数据,可是,有时候搜狐不可靠,只能得到 公网ip,其他信息无用,就像这样 2.既然这样,还不如我自己请求自己的 ...
- nginx反向代理导致请求header头信息丢失
背景:前端与后端调试接口,后端拿不到前段发过去的请求头信息,导致接口不通.(但是在本地是可以拿到的) 原因:nginx做了反向代理,没有请求时候加头信息的配置 报错如下: 解决方法: 方法一:NGIN ...
- Andriod的Http请求获取Cookie信息并同步保存,使第二次不用登录也可查看个人信息
Android使用Http请求登录,则通过登录成功获取Cookie信息并同步,可以是下一次不用登录也可以查看到个人信息, 注:如果初始化加载登录,可通过缓存Cookie信息来验证是否要加载登录界面.C ...
- js获取http请求响应头信息
var req = new XMLHttpRequest(); req.open('GET', document.location, false); req.send(null); var heade ...
- node获取头信息数据
req.fresh req.stale var version = 100; app.get('/test',function(req,res){ res.set('etag',version); i ...
- Express之get,pos请求参数的获取
Express的版本4.X Get query参数的获取 url假设:http://localhost:3000/users/zqzjs?name=zhaoqize&word=cool& ...
随机推荐
- 解决pycharm中cv2报错问题,anaconda安装opencv
写在前面的话:cv2 报错是因为没安装opencv安装包所导致,并且在pycharm终端不可使用pip install cv2 进行安装! 如何解决cv2报错: 首先,值得注意的是在pycharm中, ...
- 渗透测试工具sqlmap基础教程 【转】
转载请注明出处:http://blog.csdn.net/zgyulongfei/article/details/41017493 作者:羽龍飛 本文仅献给想学习渗透测试的sqlmap小白,大牛请绕过 ...
- app对接微信支付(app支付)
(先补充一下,app唤醒微信支付失败的话,在确保没错的情况下,建议换一个手机或者重新下载微信,不知道是微信缓存还是什么原因) 1.先申请好开发环境 app支付不需要公众号,所以申请好开发商号和开发平台 ...
- 织梦dedecms网站迁移搬家图文教程
织梦dedecms网站迁移搬家图文教程 2014-07-31 dedecms教程 文章介绍 织梦作为国内使用最多的程序之一,难免很多新手在接触dede时不知道怎么转移也就是搬家dede的程序,而且 ...
- Mysql数据库基础第二章:(六)连接查询
Mysql数据库基础系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 mysql数据库基础第一章:(一)数据库基本概念 mysql数据库基础第一章:(二)mysql环境搭建 mys ...
- Python中用eval将字符串转换为字典时候出错:NameError: name ‘null’ is not defined的解决方法
这两天在用python调用接口时,因为接口返回的是str类型的数据,形如: 因为这样的str类似字典,所以我想把它转为字典以便处理,使用的是eval来进行转换,如下: <pre name=& ...
- 02 Spark架构与运行流程
1. 为什么要引入Yarn和Spark. YARN优势1.YARN的设计减小了JobTracker的资源消耗,并且让监测每一个Job子任务(tasks)状态的程序分布式化了,更安全.更优美. 2.在新 ...
- css制作仿商城侧边导航
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- Unity 消息机制
最近有新项目需要和同事合作开发,他做UI 我做网络层,做着做着发现 如果我们要相对独立完成自己的开发任务,那我们的代码耦合得减少,不然 一个人代码有大改的时候,另一个人也要进行大幅修改,这样不便于后期 ...
- javaScript面向对象(继承篇)
一.构造函数继承 function Parent() { this.money = '2亿' this.eat = function () { console.log('吃饭') } } func ...