Thanks for logging the bug about the delegate property. I think the issue of the callbacks not occurring was being caused by my delegate object running on a background thread and then the thread ending before the callback could occur. It works now so that I can do:
NSURLConnection conn = new NSURLConnection(req, this); and this registers the objective-c selectors to be the NSURLConnection delegate. Duane On Tue, Nov 17, 2009 at 5:01 AM, Laurent Etiemble < [email protected]> wrote: > Hello, > > I will log a bug about the delegate property, as obviously it was > mis-generated. For the rest, can you provide a small test-case ? > > Regards, Laurent Etiemble. > > 2009/11/15 Duane Wandless <[email protected]>: > > Some more info. I am on Snow Leopard but get the same results on > Leopard. > > I took the code from NSURLConnection.SetDelegate() and moved it into my > code > > like this: > > > > Action<NSURLConnection.NSURLConnectionEventDispatcher> > > assignment = > > (d => > > { > > d.ConnectionDidCancelAuthenticationChallenge += > new > > > NSURLConnection.ConnectionDidCancelAuthenticationChallengeEventHandler(d_ConnectionDidCancelAuthenticationChallenge); > > d.ConnectionDidFailWithError += new > > > NSURLConnection.ConnectionDidFailWithErrorEventHandler(d_ConnectionDidFailWithError); > > d.ConnectionDidFinishLoading += new > > > NSURLConnection.ConnectionDidFinishLoadingEventHandler(d_ConnectionDidFinishLoading); > > d.ConnectionDidReceiveAuthenticationChallenge += > new > > > NSURLConnection.ConnectionDidReceiveAuthenticationChallengeEventHandler(d_ConnectionDidReceiveAuthenticationChallenge); > > d.ConnectionDidReceiveData += new > > > NSURLConnection.ConnectionDidReceiveDataEventHandler(d_ConnectionDidReceiveData); > > d.ConnectionDidReceiveResponse += new > > > NSURLConnection.ConnectionDidReceiveResponseEventHandler(d_ConnectionDidReceiveResponse); > > d.ConnectionWillCacheResponse += new > > > NSURLConnection.ConnectionWillCacheResponseEventHandler(d_ConnectionWillCacheResponse); > > d.ConnectionWillSendRequestRedirectResponse += > new > > > NSURLConnection.ConnectionWillSendRequestRedirectResponseEventHandler(d_ConnectionWillSendRequestRedirectResponse); > > d.ConnectionDidSendBodyData += new > > > NSURLConnection.ConnectionDidSendBodyDataTotalBytesWrittenTotalBytesExpectedToWriteEventHandler(d_ConnectionDidSendBodyData); > > }); > > NSURLConnection.NSURLConnectionEventDispatcher @delegate > = > > new NSURLConnection.NSURLConnectionEventDispatcher(); > > assignment(@delegate); > > NSURLConnection conn = new NSURLConnection(req, > @delegate); > > > > Also added some logging to > > NSURLConnectionEventDispatcher.RespondsToSelector() and I do see in the > log > > some requests to see if my delegate responds to: > > selector > > connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite: > > selector connection:canAuthenticateAgainstProtectionSpace: > > selector connection:needNewBodyStream: > > > > But only these 3. I added the ConnectionDidSendBodyData event, which is > > also not called. I did do the same code in obj-c and the same 3 > selectors > > are checked plus a few extra. And the didSendBodyData selectors is > called > > in obj-c. > > > > Because of the logging I know that the @delegate is being inspected by > > NSURLConnection. But after those 3 no selectors are called on > > NSURLConnectionEventDispatcher. I even tried just returning true to > > respondsToSelector hoping to raise an error, but that did not. > > > > Any help would be greatly appreciated. > > > > Duane > > > > On Sat, Nov 14, 2009 at 11:09 AM, Duane Wandless <[email protected]> > wrote: > >> > >> I'm trying to use NSURLConnection, mainly to take advantage of Apple's > >> built in proxy detection. However I cannot get the delegate to work. > >> > >> Any help in getting NSURLConnection to work would be greatly > appreciated. > >> > >> NSURLConnection.Class.cs defines: > >> public virtual Id Delegate > >> { > >> get { return ObjectiveCRuntime.SendMessage<Id>(this, > >> "delegate"); } > >> set { ObjectiveCRuntime.SendMessage(this, "setDelegate:", > >> value); } > >> } > >> > >> However there is no "delegate" selector defined on NSURLConnection so > >> SetDelegate fails with: > >> 2009-11-14 10:50:12.468 SimplePrototype[1356:5e03] -[NSURLConnection > >> delegate]: unrecognized selector sent to instance 0x6d3b20 > >> > >> Also if I try: > >> NSURLConnection.NSURLConnectionEventDispatcher d = new > >> NSURLConnection.NSURLConnectionEventDispatcher(); > >> d.ConnectionDidFailWithError += new > >> > NSURLConnection.ConnectionDidFailWithErrorEventHandler(d_ConnectionDidFailWithError); > >> d.ConnectionDidFinishLoading += new > >> > NSURLConnection.ConnectionDidFinishLoadingEventHandler(d_ConnectionDidFinishLoading); > >> d.ConnectionDidReceiveData += new > >> > NSURLConnection.ConnectionDidReceiveDataEventHandler(d_ConnectionDidReceiveData); > >> d.ConnectionDidReceiveResponse += new > >> > NSURLConnection.ConnectionDidReceiveResponseEventHandler(d_ConnectionDidReceiveResponse); > >> NSURLConnection conn = new NSURLConnection(req, d); > >> > >> none of the callbacks are invoked. I also tried creating a class that > >> defined: > >> [ObjectiveCMessage("connection:didReceiveResponse:")] > >> public void didReceiveResponse(NSURLConnection conn, > NSURLResponse > >> resp) > >> > >> but that failed to receive a response either. I also tried creating the > >> connection with start immediately false and then calling start, again > >> without success. > >> > >> Thanks, > >> Duane > >> > > > > >

