我已经写了一段时间的iPhone应用程序,发送数据到服务器,接收数据(通过HTTP协议),没有考虑太多。理论上我对流程比较熟悉,但我不太熟悉的部分是HTTP多部分请求。我知道它的基本结构,但我不知道它的核心。
似乎每当我发送与纯文本不同的内容(如照片、音乐)时,我就必须使用多部分请求。谁能简单地给我解释一下为什么要用它,它的优点是什么?
如果我用它,为什么用这种方式发送照片更好呢?
我已经写了一段时间的iPhone应用程序,发送数据到服务器,接收数据(通过HTTP协议),没有考虑太多。理论上我对流程比较熟悉,但我不太熟悉的部分是HTTP多部分请求。我知道它的基本结构,但我不知道它的核心。
似乎每当我发送与纯文本不同的内容(如照片、音乐)时,我就必须使用多部分请求。谁能简单地给我解释一下为什么要用它,它的优点是什么?
如果我用它,为什么用这种方式发送照片更好呢?
在原型中,我可以用下面的代码显示“加载…”图像:
var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars,
onLoading: showLoad, onComplete: showResponse} );
function showLoad () {
...
}
在jQuery中,我可以将服务器页面加载到一个元素中:
$('#message').load('index.php?pg=ajaxFlashcard');
但是我如何附加一个加载旋转到这个命令,因为我在原型?
我想添加一个自定义头的AJAX POST请求从jQuery。
我试过了:
$.ajax({
type: 'POST',
url: url,
headers: {
"My-First-Header":"first value",
"My-Second-Header":"second value"
}
//OR
//beforeSend: function(xhr) {
// xhr.setRequestHeader("My-First-Header", "first value");
// xhr.setRequestHeader("My-Second-Header", "second value");
//}
}).done(function(data) {
alert(data);
});
当我发送这个请求,我看FireBug,我看到这个头:
OPTIONS xxxx/yyyy HTTP/1.1 Host: 127.0.0.1:6666 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive Origin: null Access-Control-Request-Method: POST Access-Control-Request-Headers: my-first-header,my-second-header Pragma: no-cache Cache-Control: no-cache
为什么我的自定义头去访问-控制-请求-头:
Access-Control-Request-Headers: my-first-header my-second-header
我期待的头值是这样的:
My-First-Header:第一个值 My-Second-Header:第二个值
这可能吗?
我了解端口工作的基本原理。然而,我不明白的是多个客户端如何同时连接到端口80。我知道每个客户端都有一个唯一的端口(用于他们的机器)。服务器是否从一个可用端口向客户端返回,并简单地声明该响应来自80?这是如何工作的呢?
我注意到一个奇怪的警告信息,当使用谷歌chrome检查器(F12)查看下载的资源:
注意显示临时标题
我发现一些可能相关的东西,网络面板:添加临时请求头的警告,但我不能完全理解它。相关问题可以发现Chrome块请求以及XMLHttpRequest无法加载。未加载的资源显示警告:显示临时标头。
与第一个问题类似,我的资源被阻塞了,但后来自动加载了相同的资源。不像第二个问题,我不想解决任何问题;我想知道这条信息是什么意思以及我为什么收到它。
如何通过JavaScript访问页面的HTTP响应头?
与此问题相关,该问题已被修改为询问访问两个特定的HTTP报头。
相关: 如何通过JavaScript访问HTTP请求报头字段?
我有一个WebView正在从互联网加载一个页面。我想显示一个ProgressBar,直到加载完成。
我如何监听WebView页面加载的完成?
我希望我的应用程序能够识别用户在手机屏幕上从右向左滑动。
如何做到这一点?
当我的脚本正在执行一些可能需要时间的任务时,我如何使用进度条?
例如,一个函数需要一段时间才能完成,完成后返回True。如何在函数执行期间显示进度条?
请注意,我需要这是实时的,所以我不知道该怎么做。我需要一根线吗?我不知道。
现在我没有打印任何东西,而函数正在执行,但一个进度条会很好。此外,我更感兴趣的是从代码的角度如何做到这一点。
在编写自定义类时,允许使用==和!=操作符进行等价通常是很重要的。在Python中,这可以通过分别实现__eq__和__ne__特殊方法实现。我发现最简单的方法是以下方法:
class Foo:
def __init__(self, item):
self.item = item
def __eq__(self, other):
if isinstance(other, self.__class__):
return self.__dict__ == other.__dict__
else:
return False
def __ne__(self, other):
return not self.__eq__(other)
你知道更优雅的方法吗?你知道使用上面比较__dict__的方法有什么特别的缺点吗?
注意:一点澄清——当__eq__和__ne__未定义时,你会发现这样的行为:
>>> a = Foo(1)
>>> b = Foo(1)
>>> a is b
False
>>> a == b
False
也就是说,a == b的计算结果为False,因为它实际上运行的是a is b,这是一个身份测试(即,“a和b是同一个对象吗?”)。
当__eq__和__ne__被定义时,你会发现这样的行为(这是我们所追求的行为):
>>> a = Foo(1)
>>> b = Foo(1)
>>> a is b
False
>>> a == b
True