GithubHelp home page GithubHelp logo

coderyi / networkeye Goto Github PK

View Code? Open in Web Editor NEW
1.4K 52.0 238.0 2.4 MB

a iOS network debug library, monitor HTTP requests

Home Page: http://coderyi.com

License: MIT License

Ruby 0.91% Objective-C 99.09%
network-debug http-monitor ios objective-c networkeye nsurlconnection nsurlsession charles network network-monitoring

networkeye's Introduction

NetworkEye

Pod Version Pod Platform Pod License Twitter

README 中文

NetworkEye,a iOS network debug library,monitor HTTP requests.

It can be detected HTTP request include web pages, NSURLConnection, NSURLSession, AFNetworking, 3rd libraries, 3rd SDK ,and so on. very convenient and practical.

It can be map local json file.

I created a google group,this group is for general discussion NetworkEye ,welcome to join,https://groups.google.com/d/forum/networkeye

if you use NetworkEye, you can add it in here,Who-Uses-NetworkEye

welcome to new pull request,that fix bug,add new features,add support other platform.and welcome to new issues.

and thanks to kasketis write the swift version netfox

Podfile

	platform :ios, '7.0'
	pod 'NetworkEye', '~> 1.1.2'
	# pod 'NetworkEye/FMDB', '~> 1.1.2'   # NetworkEye with FMDB ,save your requests to database

Instruction

Note:Use Network Eye in DEBUG mode

add the code in AppDelegate.m

#import "NEHTTPEye.h"
#if defined(DEBUG)||defined(_DEBUG)
    [NEHTTPEye setEnabled:YES];
#endif

you can use use the shortcut (⌘ Command + n) , a double tap or shake device to call out the monitoring data interface

NEHTTPEyeViewController

You can also use the following code

#if defined(DEBUG)||defined(_DEBUG)
    NEHTTPEyeViewController *vc=[[NEHTTPEyeViewController alloc] init];
    [self presentViewController:vc animated:YES completion:nil];
#endif

In NEHTTPEye, the default password of database is "networkeye" ,and you can save 300 requests.

the database name is networkeye.sqlite,and stored in the cache directory.

#define kSQLitePassword @"networkeye"

#define kSaveRequestMaxCount 300

you can change it use NEHTTPModelManager

    [NEHTTPModelManager defaultManager].saveRequestMaxCount=300;
    [NEHTTPModelManager defaultManager].sqlitePassword=@"networkeye";

NetworkEye use FMDB and SQLCipher。 FMDB is used to store data,SQLCipher is used to encrypt the database。

Monitoring data interface supports some search conditions ,it is URL,statusCode,HTTPMethod,MIMEType。

Preview

Licenses

MIT License.

Contributors

thanks!

Xi Lin

Zhu Lida

Jackrex

networkeye's People

Contributors

coderyi avatar iimuy avatar kareem-hewady avatar panyult avatar zld avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

networkeye's Issues

startLoading中NSURLConnection的问题。

采用NSURLSessionDataTask发出去的请求,都会被拦截下来变成NSURLConnection发出去,这样iOS7之后出的这套API就没啥用处了。仅仅只是上层用了新的API来创建了一个request而已,实际是被NSURLConnection接管了。NSURLSession的共享cookies、验证策略、少一次握手等这些功能都没有了。

个人觉得是一种得不偿失的方法,请问,有没有其他的解法。

Error in responseJSON

I modify data like this: (in NEHTTPEye.m)
-(id) responseJSON {
。。。
if(error){
NSLog(@"JSON Parsing Error: %@", error);
return nil; // <= here
}
。。。
}

When "returnValue" is nil , the "NSJSONSerialization" will raise a NSException. So I return right now when error is not nil.

- connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite: ... is never called when NetworkEye is enabled

so I found out that the delegate (NSURLConnectionDataDelegate) method - connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite: is never called when NetworkEye is enabled. So in connections that need progress tracking I disable NetworkEye first. I tried to fix it myself but I can't see a way of doing so with the current library design. I hope that you can find a way around it. Keep up the good work (Y)

[enhancement label]hope there's a mark for those who has already checked

hi, thanks for your tools.
i hope there's a function of making those apis with a mark after checked, cause there' many apis in the list and their names are nearly the same as each other that i cant not tell them until i checked the content inside it. this is really troublesome.
thanks again.

关于networkeye是否需要数据库的讨论,请问大家觉得拦截到的请求需要存储到数据库吗?

关于networkeye是否需要数据库的讨论,请问大家觉得拦截到的请求需要存储到数据库吗?
1.networkeye其实是一个小东西,是否需要一个数据库这样一个比较重的东西,
2.因为网络请求有时候插入速度比较快,比如访问UIWebView的时候,有时候就会插入很多请求,这样也会造成一些插入出错
3.插入数据库,我目前只插入JSON和XML,有些情况,比如网页的联调,或者一些文本等就不方便插入数据库了
4.如果不用数据库,不在内存的时候就看不到了;比如很多崩溃就是因为网络请求的错误,崩溃之后就看不到网络请求的信息了

iOS13 使用UISearchDisplayController导致崩溃

在 iOS 8 之前,我们在 UITableView 上添加搜索框需要使用 UISearchBar + UISearchDisplayController 的组合方式,而在 iOS 8 之后,苹果就已经推出了 UISearchController 来代替这个组合方式。在 iOS 13 中,如果还继续使用 UISearchDisplayController 会直接导致崩溃,崩溃信息如下:
引用:https://www.jianshu.com/p/767e6f2d8435

Swift + CocoaPods

Hello, I'm having some problems importing the framework from CocoaPods into a Swift project.

Podfile:
pod 'NetworkEye', '~> 0.9.8'

Bridging-Header:

import <NetworkEye/NEHTTPEye.h>

Error when building in the bridging-header import: "Could not build module 'NetworkEye'

By going further, it seems this line is failing inside NEHTTPModelManager.h

import "FMDB.h"

I guess it's a pod related thing but it would be super awesome if you could fix this problem as I find this tool to have great potential.

Cheers!

Crash bug

JSON Parsing Error: Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

image

returnValue 为nil 会导致crash

异常情况求处理

Networkeye discussion about the need for a database, what you think needs to be stored intercepted requests to databases?

Networkeye discussion about the need for a database, what you think needs to be stored intercepted requests to databases?
1.networkeye actually a little thing, whether you need a database such a heavy thing,

  1. The network request because sometimes insert fast, such as when you use UIWebView , sometimes it will insert a lot of requests, it will also cause some inserted errors
  2. Insert the database, I am currently only insert JSON and XML, in some cases, such as webpage, or some text into the database and so will not convenient
  3. If you do not have a database, when it not in memory and you will not see; for example, many crashes because of erroneous network requests, after a crash ,you can not see the information of requested the network

流量大小获取相关问题

流量的获取是用的NSURLResponse的 expectedContentLength,但这应该只是在网络正常情况下,请求完全走通后的一个数据,并不能代表实际真实产生的流量吧,请问这个需要怎么获取网络不好,请求走到一半就断了的情况?

优化

-[NEHTTPEye stringWithDate:]里面的dateFormatter可以用static来优化一下吧,NSDateFormatter初始化还是比较耗时的。

建议

2016年底之后iOS app 将取消http的,所以使用charles就增加了一个门槛。所以NetworkEye的使用需求将会增加。所以这里需要改善一下。

去除把捕获的每一个请求保存数据库的逻辑(太影响速度了),只有需要的时候(比如看到一个错误请求)才主动保存数据库。这个跟charles不主动保存,需要的时候export一个样。

记得加上!

Click record in filter result table didn't go to the right detail view

Steps to reproduce the bug:

  1. Shake and show the network request view, remember the first record's url as A.
  2. Type anything to start a filter query, such as POST.
  3. In the filter result table, remember the new first record's url as B.
  4. Click the first record, show the detail view. The detail view is A instead of B.

'UISearchDisplayController is no longer supported

*** Terminating app due to uncaught exception 'NSGenericException', reason: 'UISearchDisplayController is no longer supported when linking against this version of iOS. Please migrate your application to UISearchController.'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.